Here’s something that makes the concept of mind-uploading very difficult, and potentially impossible: in the brain, the separation between “hardware” and “software” doesn’t exist in the same way that it does in computers. From Dennett’s The Mind’s I:

brains are not like computers fresh from the factory and all alike. Even at birth human brains are no doubt uniquely configured—like fingerprints—and a lifetime of learning and experience can only enhance their idiosyncracies. There are scant grounds then for hoping that anything with the hardware-independence of a program can be “read out” of a brain (at a periodic “mind taping” session). There is even less hope that such a mind tape, even if it could be constructed, would be compatible with another brain’s hardware. Computers are designed to be readily redesignable (at another level) by the insertion, in one big lump or rush, of a new program; brains presumably are not. (252)

Dennett makes the interesting point that transferring huge amounts of information between brains with different hardware is not impossible: we already do it, via language. Perhaps language will ultimately prove to be the most efficient way to transfer large amounts of abstract information across brains.

The problems of transferring massive amounts of information between structurally different brains—such as yours and ours—are not insurmountable. The technology that already exists for accomplishing that task may, however, turn out in the end to be the most efficient possible. One of the most recent and advanced examples of that technology is in your hands at this instant. (252)

That said, we have been able to “read out” motor commands and visual images from brains, so maybe it’s just a matter of time until we can read out more abstract pieces of information and complex knowledge.