Why not create code that allows bitcoin to create a new address (not from the pool), then send some specified number of coins to that address, then dump the private key to screen, and then delete all trace of that private key from the computer - no saving it to disk at any time, not even permitting the OS to swap it out to disk.
Users would then have to take adequate steps to ensure they doesn't lose that key.
Obviously, there would have to be flashing black and yellow warning screens, telling the user that if they don't securely save the key that's now on screen, they'll lose their coins.
Thoughts?
Or (and that's doable ATM) :
1. Encrypt the wallet.dat with OpenSSL, using a passphrase only :
openssl aes-256-cbc -a -salt -in wallet.dat -out wallet.dat.enc
2. Store the wallet.dat.enc (and its sha1 preferably) in various places : USB keys, portable media players, external hard drives, you can even email it to yourself !
3. If needed, get the wallet.dat back with :
openssl aes-256-cbc -d -a -in wallet.dat.enc -out wallet.dat
This method is really straightforward, you can put your wallet in several independent locations, and you don't have to keep a private key or something. Just a passphrase. This is imho the method that has the best security and reliability / complexity ratio. If you use bcrypt instead of OpenSSL, it's even simpler : bcrypt wallet.dat to encrypt, bcrypt wallet.dat.enc to decrypt.