A page that list all the nodes by views but to have a one CMS controlled banner image on that page
Create a admin form that allows the admin user to upload the image file, as you say in your question.
Create custom block that renders the image as you want. You can do in a custom module (better, more solid) or crete the block using the GUI and add the HTML code. In both cases, the img should point the file uploaded by the admin form.
Place the block over your view in the view's page.


This is good if:


You only have one view that needs the header image.
That image is the same for evey user.