Dictation
It is possible to use dictation for programming, although there isn't a perfect way to do so yet.
There's an open-source project for programming by voice called VoiceCode, using Dragon NaturallySpeaking and emacs at http://sourceforge.net/projects/voicecode/
Other people use custom macro systems. There are a couple of discussion groups around programming by voice where you can ask around for suggestions:
http://tech.groups.yahoo.com/group/VoiceCoder/
http://www.speechcomputing.com/
Unfortunately, these systems are all optimized for windows (which has the best version of speech recognition software, Dragon NaturallySpeaking, at the moment), but it might be worth considering switching.
Chorded Keyboard
Another possibility might be to use a chorded keyboard (http://en.wikipedia.org/wiki/Chorded_keyboard). The basic idea is that you use only as many keys as you have fingers, and press different chords or combitinations of keys to send different symbols. (That way, you only need to find one position on the keyboard).
A quick google search reveals http://asetniop.com/, which claims to be able to use a regular keyboard for chording (mac version here: http://www.asetniop.com/blog/?p=181)
Other Keyboard alternatives
Orbitouch keyless keyboard uses two independant domes that you can just leave your hands on. You'd need to memorize the layout rather than reading it off the device, but you'd need memorization for the chorded keyboard anyways. http://orbitouch.com/