1. I can choose my domain (although nowadays that's not a problem - it was when I first started).
2. I can tweak spam and anti-virus filtering.
3. I can view the logs if I think something is wrong.
4. I can be as (in)tolerant of other mail servers as I want (I've noticed that Google is a bit lax in the rules it enforces with regards to rejecting mail).
5. I don't trust Google or other providers not to mine my email, or to back it up.
6. It's a useful learning experience.
And you do get rather more than just postfix - there's webmail, IMAP, etc, all managed for you.
Because of the low volume of outgoing mail from a VPS, it's very easy to end up on blacklists.
When you are sending out a lot of email, recipients see a volume of mail. If a few of these get marked as spam, no big deal, you sent out 5,000 mails in an hour, of which 2-3 were marked as a false positive.
If you are running your own VPS you are sending out comparatively fewer mails so the decision on whether you are a spammer or not is made with a lot less information -- and most recipients will assume you are a spammer immediately.
I was on the wrong end of blacklisting situation and it was extremely frustrating. First, you don't know that your customers aren't receiving the emails. Second, you have very little clout in getting things cleared up. Third, it's just a huge PITA that wastes a lot of time.
I'm running a very small operation, but one bad instance of my IP being blacklisted prompted me to shell out the extra $3 /months to have Rackspace send my emails.
The blacklist issues others have pointed out are real. Some IPs are on blacklists and you will not be able to get them removed without an outrageous amount of leg work. Most of the premium email hosting places make sure they're not on those blacklists.
Personally, I use FastMail.fm. I've gotten the impression that if TSHTF, they'll fix it fast. The price is reasonable. They're not Google. When I get a website up that can't be served via static pages, I'll be going the VPS or other cloud service, but for email, I'm much happier leaving that to a premium provider.
Use a spam service such as spamhero.com or google postini as the MX for your domain so you do not have to do spam filtering yourself, have the spam filter service deliver the mail to your application (over SMTP). Your app can do whatever processing it needs to do, and then deliver the mail to the MX server of the ISP you're using to host your mail.
This way you can use your app without any changes as a local smtp filter as well (e.g. if you're using something like amavis).
* use a service like http://mailgun.net/
* install http://lamsonproject.org/ on your server and define a forward from your hosted solution to your server
* run your own mail server and use something like procmail to execute scripts or combine it with lamson/something similar
We recently switched over to Atmail (http://atmail.com/) after years of running Cyrus+Postfix (with various anti-spam tools). Atmail is kinda the best of two worlds -- you have control over your data, but the software is easy to maintain. Under the hood, Atmail is using standard Unix/Linux components (dovecot, exim, spamassasin etc), but makes it easy to maintain.
For a few other companies I'm involved with, I've deployed Google Apps, just because it's dead simple and gives you no headache.
Huge disadvantage (other than the fact that power, static IP etc are all your problem) is that a LOT of email providers will think you are spam.
Now I use SES for outgoing (for my app) and Gmail for incoming. Works a lot better. I remember reading that Gmail lets you write filters and what not as well, but I have not examined it in detail. I'm sure its do-able.