OK I seem to have found the solution.
At line 74 in the Twenty Ten header.php there is the following line of code:
$image >= HEADER_IMAGE_WIDTH ) :
// Houston, we have a new header image!
And in functions.php there is the following:
// The height and width of your custom header. You can hook into the theme's own filters to change these values.
// Add a filter to twentyten_header_image_width and twentyten_header_image_height to change these values.
define( 'HEADER_IMAGE_WIDTH', apply_filters( 'twentyten_header_image_width', 940 ) );
define( 'HEADER_IMAGE_HEIGHT', apply_filters( 'twentyten_header_image_height', 198 ) );
// We'll be using post thumbnails for custom header images on posts and pages.
// We want them to be 940 pixels wide by 198 pixels tall.
// Larger images will be auto-cropped to fit, smaller ones will be ignored. See header.php.
set_post_thumbnail_size( HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT, true );
Twenty Ten tests to see if your image is larger than or equal to the default width of 940px - if it is it becomes the custom header image. These values can be customised with filters.