We use PayPal. The solution we found was to cancel the subscription and create a new one. Sure this isn't atomic but we haven't had anyone drop mid flow yet.
It looks and feels atomic to the user.
PayPal could go a long way to document their API better. The number of customers with PayPal accounts is large enough that we're willing to deal, especially since setup is a one time cost.
PayPal does not support monthly recurring billing between Germany and United States. Thats no good.
I think someone can displace PayPal but not enough payers are comfortable using services other than PayPal, especially on a startup site.
Hope this helps someone.