A trick I learned on Slashdot long ago that has served me well over the years is to use a formula-based password whereby you have a constant formula combined with an application-specific salt. Take this simplified example for web pages, say I wanted a password for slashdot:
1) Take each alternate letter of the server root section of the url: "saho"
2) Append the remaining letters of the url so you now come to "saholsdt"
3) Sprinkle in a bit of your username after every second letter: "sakhodlsadtn"
4) And finally add a few numbers, say the last two letters of the server root converted to ascii: "15sakhodsadtn20"
Hopefully you get the idea. What you end up with is a password that is unique per-site or application but - assuming you use a consistent formula every time - is easy for you to remember. Other than a few exceptions I have been able to store my passwords nowhere else but my head. (Work-related passwords that expire every month have been the exception, the solution for me was to write down nothing but the salt and apply my formula accordingly)