Naming is a tough biz. You want to create something that will stand the test of time, that so many people will remember and invest their time, money and effort into using it.
Here's the cheatsheet:
It should be related to the purpose or service you provide.
It's a .com
When normals think of the Internet, they think .com. You could do others, but they just plain don't have the same kind of authority.
As few characters as possible
Complexity means people won't remember it. The shorter the better. This minimizes the number of keystrokes to try it as well.
As few syllables as possible
See the last rule. This minimizes the number of things people have to remember.
It's better to be two simple, commonly used words mashed together like sitemint.com (leandomainsearch.com is useful for this) than one super long complex one.
When people talk about your site, it should be obvious how to pronounce it. This reduces the cognitive load of telling someone your site name. Be careful with names that might have ambiguous word boundaries. Expertsexchange.com is a notorious example of this. (Obviously this is one where posterous.com failed... but it can work to your advantage if it turns into a mini-conversation e.g. paw-sterous or post-erous, since in memory, every second you think about a given thing makes it more likely you will recall it.)
One or more of them can be broken, but the best names conform to as many of these as possible.
Other useful resources include instantdomainsearch.com and wordoid.com. I've also had success finding usable domains for under $1000 on sedo.com. For those buying domain names from squatters, Fred Wilson's post on buying a domain is probably best practice.