In the end I used get_posts, because I got confused, and thus irritated by the documentation for get_children().
<?php
$show=9;
$r = new WP_Query(array('showposts' => $show, 'what_to_show' => 'posts', 'nopaging' => 0, 'post_status' => 'publish', 'caller_get_posts' => 1));
if ($r->have_posts()) :
while ($r->have_posts()) : $r->the_post(); ?>
<div class="upcoming" style="margin-bottom:25px; padding:0 5px 5px 20px;">
<?php $args = array(
'post_type' => 'attachment',
'numberposts' => 1,
'post_status' => null,
'post_parent' => $post->ID
);
$attachments = get_posts($args);
if ($attachments) {
foreach ($attachments as $attachment) {
?> <a style="border:none;" href="<?php the_permalink() ?>">
<?php echo wp_get_attachment_image($attachment->ID, 'front-thumb'); ?>
</a> <?php
}
}?>
<p><a style="color:red; text-decoration:none; text-align:left;" href="<?php the_permalink() ?>"><?php if ( get_the_title() ) the_title(); else the_ID(); ?> </a></p>
</div>
<?php endwhile; ?>
<?php
wp_reset_query(); // Restore global post data stomped by the_post().
endif; ?>