You can query based on the first letter by modifying the where filter example on the query_posts page..
This is very basic example, and most certainly could be improved.
My first go at modifying the WHERE filter though, i was quite happy how easy it was.. :)
Before.
<?php if (have_posts()) : ?>
Place the following code.
<?php
function filter_where($where = '') {
$a_z = range('a','z');
if(isset($_GET['starts_with']) && in_array($_GET['starts_with'],$a_z)) {
trim($_GET['starts_with']);
$where .= " AND post_title LIKE '$_GET[starts_with]%'";
}
else {
$where .= " AND post_title LIKE '%'";
}
return $where;
}
add_filter('posts_where', 'filter_where');
query_posts($query_string);
?>
Tested in the theme archive.php, and made up in a few mins, so as said, proberly could do with a little improvement...