I have several angles on this.
* I learned to type using some ancient programs that you could feed any text file in to, and it would scroll a little window through the file that displayed perhaps 10 characters at a time at whatever speed you wanted. You then had to type the letters as they appeared. As long as you were going along with what was visible in the box, you were in good shape. I forget what the program was called, but I thought it did a good job of teaching me, and I would love to know what it was if anyone knows of it.
* At some point in college, I began learning an alternative to QWERTY: http://en.wikipedia...._Simplified_Keyboard
It took me perhaps two years off and on to get really good with this (with normal computer usage, no typing practice software). If you're just learning to touch type, I would recommend taking a good look at this layout as I believe it is more efficient. It also has the added bonus of frustrating interlopers who try to use your PC, and making you look super geeky. It's easy to switch KB layouts in Windows and Linux alike.
* Anyway, when I was learning Dvorak, I printed this out and put it above my keyboard: http://www.kbuffer.com/images/dvorak.gif
I thought that worked really well. Just place your hands in the proper position and reference the paper when you need to. That way, your fingers are memorizing the motion patterns for letters and words at the same time your mind is memorizing where they are located and which finger to use.
The locations of the various symbols common to programming make some languages easier. The only major drawback is re-learning where Ctrl-C and Ctrl-V are :-)