This is what I did:
<ul>
<?php
$my_pages = wp_list_pages('title_li=&echo=0&depth=2');
$top_level_pages = mysql_query("SELECT ID FROM $wpdb->posts WHERE post_parent = '0' AND post_type = 'page' AND post_status = 'publish'");
$my_pages = str_replace('<a href=', '<span><a href=', $my_pages);
while ($row = mysql_fetch_assoc($top_level_pages)) {
extract($row);
$my_pages = str_replace('<li class="page_item page-item-' . $ID. '"><span><a href=', '<li class="page_item page-item-' . $ID. '"><span class="onlyparents"><a href=', $my_pages);
$my_pages = str_replace('<li class="page_item page-item-' . $ID. ' current_page_item"><span><a href=', '<li class="page_item page-item-' . $ID. ' current_page_item"><span class="onlyparents"><a href=', $my_pages);
$my_pages = str_replace('<li class="page_item page-item-' . $ID. ' current_page_ancestor current_page_parent"><span><a href=', '<li class="page_item page-item-' . $ID. ' current_page_ancestor current_page_parent"><span class="onlyparents"><a href=', $my_pages);
$my_pages = str_replace('<li class="page_item page-item-' . $ID. ' current_page_parent"><span><a href=', '<li class="page_item page-item-' . $ID. ' current_page_parent"><span class="onlyparents"><a href=', $my_pages);
}
$my_pages = str_replace('</a>', '</a></span>', $my_pages);
echo $my_pages;
?>
</ul>
What this did was add a span with a class of “onlyparents” to every top level link. This meant that I could use sifr (or Cufon) for those and keep the rest of them in a normal font and preserving the rest of the classes for each li element. I have no idea if there is a better way of doing it but this did the trick.