Something like Plimus or the like.
People on tigsource like saying "don't use plimus they have very poor support".
Definitely use a payment provider (FastSpring/BMT Micro) instead of something like paypal/google checkout - the % charge is slightly higher
Quite a lot higher - 3-ish% vs 8-ish%. But yeah, looking like it's worth it.
I've sent off a request to fastspring to set up an account with some queries (on the download link expiry thing mainly).
As for upgrading, the best sure-fire way is to build that right into your game and have it dial a server or something. Less elegant solutions include popping in a timer that expires and prompts the user to visit your website. Super cheap-o solution is just to put a link to your website in the game so users actively searching for an update can find one.
Another sure-fire way is to make it only available on things like steam/app store/&c.. I think I'll be okay with email notifications letting people know to upgrade.
Why not include something in your game like "Report bug!" that sends you an e-mail or something?
Increased engineering complexity. I want the game to be a game, I'd rather not have to make it a download client, or an email client, or all this other stuff.