As others have said, its common to 'imap' jj or something similar to escape (I use 'jk' myself)
If you use the program keyremap4macbook (I think that is what its called) you can do the following:
bind caps lock to ctrl (skip if you have hardware hhkb)
search for "Control_L to Control_L" in the program, there is a setting that, when toggled, will send esc on key up if no other keys were pressed, or normal ctrl when pressed with any other keys.
I use this on my macbook, caps lock is much easier to access than control.