You can add theme support in your functions file for a Custom Header page using this code which also enables you to add a default size and selector class which you can style with CSS.
add_theme_support( 'custom-header', array(
'width' => 320,
'height' => 60,
'header-selector' => '.site-title a',
'header-text' => false
Or this method enables the user to change the header image in every page.
You can add this feature using custom fields with a header hook which isn't difficult.
The hardest part would be coding the meta box to display on all edit screens however the Codex offers a very basic example.
Another solution would be to use the code from the Twenty Eleven default theme which enables the use of Featured Images as header images on every single post or page. Slick featured for a theme in my opinion as it already includes the meta box.