I've been doing my own email for 15 years now, and it's really not that hard to maintain. Sure, if your flavor of GNU/Linux changed significantly every time there's a new version, it's a pain to keep up to date, but I've been using similar configuration files, updated a little now and then, with the same software installed across many servers for ages (sendmail, procmail, milted greylist, imap-uw, cyrus-sasl, Squirrelmail for OCCASIONAL webmail only, et cetera).
Some people like to tinker too much to maintain a constantly running server. For them, self hosting is NOT a good idea. Some people like to run GNU/Linux distros which are too difficult to maintain, and again, self hosting isn't an answer. A simple GNU/Linux distro or some flavor of BSD can be much easier to keep up to date and therefore more secure.
There are two primary reasons why I will NEVER move to an outside email provider. The most important one is that in this day and age your email can be subpoenaed without you ever even knowing and employees of any given service can't always be trusted to not do bad things. I want full, 100% control of my email. And in spite of what other people have written in comments about the fact that email isn't secure end-to-end, the archives are always in my possession. But add TLS and at least you've made it MUCH harder for people to see stuff traveling over the Internet.
The second reason is that almost EVERY service is non-deterministic (if I'm wrong, please tell me). I am tired of people wondering where email is only to find out that some cheesy content-based filter silently dropped their email or something else happened and the likelihood that Google or Yahoo will EVER look in their logs to tell you is practically nil. My filtering is based on servers being legitimate, not based on some arbitrarily determined rules. If something is rejected, there's always a known reason and it is ALWAYS logged.
Again, please correct me if I'm wrong, but this has been my experience to date.