I do a combination of #1 and #2.
I have a (cheap!) web hosting account (with Dreamhost) which also provides me with an email address on their mail system. I have the DNS entries for my domain point to Dreamhost, so any mail for my domain gets delivered there.
But I only use Dreamhost as a mail drop-off point - I don't store my mail there. I have a cron job that runs fetchmail every few minutes which pulls the mail down to my home server, where I'm running dovecot, exim, and squirrelmail (webmail), and I access my mail there. (As well as make periodic backups of all the mail stored there.)
For outgoing mail I do the same in reverse. I have exim on my home server set up to relay any outgoing mail up to dreamhost's SMTP server. That gets me around the issue of not being able to send mail from a dynamic IP.
HTH,
DR
That sounds more or less like what I intended to do before asking for advice here... Thanks. Gesh