You can doing this by just overriding the styles on the carousel-indicators list items.

###Here's a typical indicators section:

<!-- language: lang-html -->
<ul class="carousel-indicators">
  <li data-target="#myCarousel" data-slide-to="0" class="active">One</li>
  <li data-target="#myCarousel" data-slide-to="1">Two</li>
  <li data-target="#myCarousel" data-slide-to="2">Three</li>
</ul>

###You'll want to override some of the default Bootstrap styles:

Convert the display from dots to rectangles by adding a width and height and removing the border-radius:

demo 1

Then get the text back by removing the negative text-indent added by Bootstrap:

demo 2

Finally, add your own background and border and style however else you like.
The full styling should look like this:

<!-- language: lang-css -->
.carousel-indicators > li,
.carousel-indicators > li.active{
    width: 100px;
    height: 25px;
    border-radius: 0;
    border: solid 1px grey;
    background: lightgrey;
    text-indent: 0;
}
.carousel-indicators > li.active {
    background: white;
}

#Working Demo in Fiddle

screenshot


You could even wrap the entire bit of CSS inside of a media query so that when screen size became limited, you defaulted back to the dots instead of awkwardly stacking the list items:

<!-- language: lang-css -->
@media screen and (min-width: 550px) {
    /* Wrap CSS Here */
}

###Responsive Demo in Fiddle