@Simon Neill re: two hashes
"I see what you are saying, but I have a sneaking suspicion that it just gives you MORE data to use to crack the password, so that rather than getting an approximate password you get the actual password."
I thought about that after I posted that comment, and that's the conclusion I reached as well. As unlikely as it would be to be able to guess/crack a good password by matching the hashes from two algorithms, it would be relatively trivial with a rainbow table and a bad password (such as a common word). That's why I posted my second comment (single algorithm used twice). It's extremely unlikely that anyone would have a rainbow table of those types of hashes.
After a bit more thinking, let me propose this as an even more secure authentication method (using a single hashing algorithm):
1. Take the password and calculate its hash.
2. Append the password onto the end of the hash string. However, instead of appending the password as-is, take a piece of non-changing account information (such as the account creation date) and use that to alter the password. For example, if the account was created on a Sunday, rot-13 the password before appending it to the string; if the account was created on a Monday, base64-encode the password before appending it; Tuesday = reverse-case the password; Wednesday = reverse-direction the password; etc.
3. Take the concatenated string from step 2 and gets its hash. This is the hash to store during account creation and used to authenticate the user's password.
By using a variety of different obfuscation techniques in step 2, in addition to using the hashing algorithm twice, I would venture a guess that this virtually guarantees the password could not be cracked via a rainbow table, by a collision, or by any brute-force method in the foreseeable future.