I really like using 1password. I have a long passphrase as my unlock key, easy to remember, then do the randomly generated codes as long as is feasible for each different service.
1) Nothing written down 2) Unique per service 3) Adjustable difficulty & char set per service, to match their stupid requirements.
Seems like the best of several worlds.