There are many ways.
The easy way is -
Select template with Header Image, such as Harbor. Then go to Dashboard and select Template tab and click on Edit Html. Then click on small selection box Expand Widget Templates to select it.
An editable box will open where you can edit your Blog template. Go to Page Structure section and delete Image URL of section Wrap 2 and Wrap 3. Further, change the Image URL of section Wrap 4 to your own. Save template. Your image will appear on your Blog's header.
Another easy way, but involves a few more step:
This method works in all new blogger templates. (if you have selected template with image header, then you must remove the images through above method by editing blog template, else your image will collide with default image.) This method also involves editing blog template's HTML. Go to the lowest portion of your blog template's HTML and hunt for this piece of code:
<b:section class='header' id='header' maxwidgets='1' showaddelement='no'>
Change this to:
<b:section class='header' id='header' maxwidgets='4' showaddelement='yes'>
And save your template.
If you do not find showaddelement='no' in some templates, then add this beside maxwidgets='1' and save the template after modification as stated above.
Finally, go to template Layout. Now you will find Add Page Element for Header. Click this and choose Add Picture. Give either picture's URL or browse for the picture in your computer, point to the picture, click save and you are done!
(Warning : Before attempting any of this, please save your template first so that you can revert back the changes any time. Further, create a test blog, attempt these settings there, and when fully satisfied with the results, then only make changes in your Blog template)