Using Bayesian filtering, SpamSieve installs as a plug-in to your mail client and lets you mark messages as spam. As you do, it builds a a corpus file of rules telling determining what is spam and what isn't. The more messages you mark, or train, the more accurate SpamSieve gets. I've been using it since November of 2003 and after years of training, it's so accurate that it rarely fails to catch an errant spam encrusted message. When it does, using either a keystroke sequence or a pulldown menu from your Mail client you can train it as spam.
At the start, it's quite labor intensive since you have to mark a few hundred messages for it to really start working, but it pays dividends. After a while, you'll have a personalized set of inclusion/exclusion rules that gets better over time. To give you an idea, yesterday I received 307 emails. Out of those SpamSieve correctly marked and moved over 30 messages and missed only 2 that needed training.
A nice advantage for iPhone use is that if you use IMAP mailboxes and leave one computer on as a sort of mail server, SpamSieve will deal with your incoming messages, filter them, and the results will be delivered to your iPhone.
The current version brings a few improvements, and works well with Mac OS X 10.4 right up to 10.6. Being a universal binary, it runs natively on both PPC and Intel-based computers. Supported clients are Apple Mail, Claris Emailer (that takes me back), Microsoft Entourage, Eudora, GyazMail, and Mailsmith. Single user licenses run $30 and two user family packs are $48. There is also a non-restricted 30 day free trial available.