Actually, it is possible with multisignature (multisig) wallets. This is based on smart contract functionality where you can have whatever logic you want in the smart contract. Most common scenario is to have three keys for the wallet, and require two of them to verify outgoing transactions. Then you keep two of the keys, while a company you trust keeps the third. When you want to send money, you verify with one of your keys, while the company sends you a code on your smartphone and verifies the transaction with its key after you correctly enter the code. If you want to stop using the company's services, you use your two keys to move to another wallet.
Even bitcoin has this functionality.