This question has been answered by BobRay. See the first response.
<a href="/" id="logo">
[[*Logo]]
</a>
[[*Logo]]

Maybe I'm still not following you, but you can put a tag like this in the Template where you want the image to appear:
<img src="yoursite.com/images/logo.png">
Then just have the admin upload and overwrite that file to create a new logo image -- or upload a logo image with a new name and edit that single line in your Template.
Another method would be to have an image Template Variable (TV) called Logo with the path to the image as its default value, and this in your template where you want the image:
[[*Logo]]
Then, all you have to do to use a new logo is to upload it and change the image file name in the TV. This will be significantly slower than the first method.
***************
It just occurred to me that you might made the rookie mistake of having a different Template for each page. That would explain your trouble.
Many sites have only one or two templates. I think Bob's Guides has two (a second one for the Blog).
I haven't used it myself but a good alternative might be this freebie extra from modmore
https://www.modmore.com/extras/clientconfig/screenshots/
It looks like they have provisions for the client to upload a 'logo' into one centralised place there - along with a bunch of other convinent fields to make global configs simple for the client.
I use different templates for different functionality, but it is the same header + footer, + chunks for html stuff that I use for more than one page. Is this still a rookie mistake?
Another example would be a Template Variable that contains the name of a chunk to insert into the page.