Here is a framework I use (YMMV) that is based on the typical CISSP approach to passwords (something you know, something you are, something you have). I break my password structure down into these three topics with character substitution. Currently I never re-use password, my typical password is about 20 characters, and I can always recall them:
Substitutions: (very common)
s = $
e = 3
o = 0
a = @
i = 1
Something I am: (example)
human = hum@n
Something I have: (example I am logging into my gmail account)
gmail - gm@1l
Something I know
mytelephone_number_with_shift_key = @!@%%%!@!@
My password for gmail might be:
hum@n.gm@1l.@!@%%%!@!@
To where I can retain the something I know, something I am and change the something I have:
Something I have: (now logging into my bank)
bank = b@nk
This would be a breakdown:
hum@n.b@nk.@!@%%%!@!@ (bank password)
hum@n.gm@1l.@!@%%%!@!@ (gmail password)
hum@n.tw1tt3r.@!@%%%!@!@ (bank password)
This allows me to always maintain strong passwords, always remember them. Mind you, there is a threat that someone can figure out the structure via say keystroke logging, inference, it is still very strong in its design, easier to remember than generated nonsense. I fiddle along a structure like this and the way I see it, if anyone is attacking this methodology, then they are a highly strong adversary.
----- ADDED NOTE (edited)
Brute forcing most of my passwords don't work using oclhashcat, or John. Most are too long and would take months. I make it a point to change my password structure once every three months. Again, your mileage may vary, and I can see the responses/comments now: "All I need to do is figure out one thing" To which I respond: "if someone can figure out any of my passwords, a strong adversary they are. They DESERVE to break it"