I've gotta be honest with you guys--I thought this problem was limited to my non-technical friends, and being a group of fairly technical-minded photographers I was expecting a lot better from this forum. After reading so many bizarre self-obsessed interpretations of the terms "upload" and "download" I started to doubt myself.
It's ok, though, after looking at half a dozen networking and operating system texts from my university days as a CS student, I've confirmed my understanding. Here's the definitive and authoritative word on it.
The terms "upload" and "download" have nothing to do with perspective of the people involved, and are often used from a third person perspective in which the speaker has no personal attachment or relationship to the machines involved. In common technical parlance, "download" and "upload" are terms used analogously to "upstream" and "downstream". No one would ever say they are going "downstream" against the river current--"'down' because it's the direction I'm going." Similarly, whether you're sitting at the server or the client is immaterial to the way the data--like the river kayak--is moving. Data going toward a server is being uploaded, and data going toward a client is being downloaded.
There is an interesting note on a networking forum I found (grr...I seem to have misplaced the link...figures) that says before P2P most programs served one primary purpose. If you run a linux box at home, you'll know this as well--you can run a "daemon" process, which denotes a server-type program--or a "client" process--which obviously denotes a client. Telnet is a client program, telnetd is the server or "daemon" process that the telnet client connects to. So many people incorrectly associate "server-ness" and "client-ness" with programs. In fact, a program can be written to do anything, and P2P programs like napster play both roles of server and client, even simultaneously, as data moves back and forth. But for the scope of a single session, the concept of "client" and "server" is very firmly fixed.
The terms "copy" and "transfer" are fine terms, definitely not incorrect, but often too general for developers like me that need to specify the roles of the endpoints of a session and wish to do so succinctly. This is the origin of "upload" and "download". Using those terms correctly, I can communicate to my technologically literate audience that, for the transfer session under discussion, the data is flowing in this direction, A is the server, and B is the client.
Using proper language communicates a volume of contextual information that I have grown accustomed to. So, it always annoys me when others use them incorrectly in the same way others are annoyed when they hear "aks" instead of "ask" or "very / really / the most unique" instead of the "unique".
I'm far happier with people that implicitly admit ignorance by using the less specific--and correct--"copy" or "transfer" than those who would unwittingly devalue "upload" and "download" with incorrect usage.