A "solution" for this would be to build a layer on top of bitcoin, where the merchant can request a payment at a specified date. A wallet provider could "find" all these payment requests from all merchants that you have recurring payments with (you could e.g. send them through the bitmessage protocol that the wallet listens to, which maintains the p2p non centralized criteria). The wallet would display them, and you could get a notification. You would then be able to select the payments you wanted to make, and sign. The provider could send the payment request a long time in advance, ie it could send all the requests for a year subscription immediately, and you decide when to sign. The wallet could structure the payment in such a way that it would not be possible to collect the payment before time X or block Y (locktime). This means you can cancel the payment by double spending the input transactions, but at time X or block Y the payment would be included in the block. The signed, time locked, transaction could be sent to the merchant using the bitmessage protocol - as you cannot send transactions where the locktime has not yet passed onto the bitcoin network. (Or directly, but I prefer solutions without direct contact between seller and customer as a design criteria - you could always make something less secure, but it is hard to make something more secure).
I don't know if anyone is working on this. The main wallet providers could get together to look into this. It would work best if this approach was open and standard, and that it did not matter what wallet software was used.
This would be my idea, so it would be possible - just not an exact copy of the debit/creditcard system (thankfully!)
Excited about the potential of Bitcoin Cash in the beautiful country of Belize.
Developer of the RegisterDocuments.com Document Registration Service (using the Bitcoin Cash blockchain).