hopefully someone will provide a better answer, but for now I'm doing this:
// We're about top start The Loop.
// Setting up a counter to keep track of the posts being processed
// We can't just use current_post as it start from zero on subsequent paged pages.
$paged_no = ($wp_query->query_vars['paged'] < 2 ) ? 0 : $wp_query->query_vars['paged'] -1 ;
$current_offset = $paged_no * $wp_query->query_vars['posts_per_page'];
and then inside the loop:
$absolute_post_index = $wp_query->current_post+$current_offset+1;
This works when there are no sticky posts. If there are any, they will be stuck on the first page. This means that if there are 5 posts per page, and one sticky post, the first page will display 6 posts, and subsequent pages will display 5 posts. In that scenario page one will number the posts 0-5 and on page two the posts will be numbered 5-9, because the sticky post is no longer being considered. That's a problem because it means that the same index will be repeated for the last post on page 1 and the first post on page 2.