I’ve just managed to resolve this now.
This
<?php $counter = 1; //counter tracks the number of the post we're on ?>
needed to be above
<?php
$temp = $wp_query; $wp_query= null;
$wp_query = new WP_Query(); $wp_query->query('showposts=3' . '&paged='.$paged);
while ($wp_query->have_posts()) : $wp_query->the_post(); ?>
(not below).
End code that works correctly is:-
<?php $counter = 1; //counter tracks the number of the post we're on ?>
<?php
$temp = $wp_query; $wp_query= null;
$wp_query = new WP_Query(); $wp_query->query('showposts=3' . '&paged='.$paged);
while ($wp_query->have_posts()) : $wp_query->the_post(); ?>
All the rest of the snippet posted in the question remaining the same.