This can be implemented as a smart contract on any sufficiently advanced blockchain (definitely Ethereum, not sure about Bitcoin).
The way this works is that you put the money in an escrow contract first, designating a trusted third party as an arbiter. If you don't dispute the transaction for a few weeks, the money goes through irreversibly. If you do, the contract "locks up", and the third party can now either decide to send the money on to its destination or return it back to you. The contract is designed in such a way that those are the only things that third party can do with your money, they have no way of taking it for themselves. Either way, they get a small cut for the trouble of adjudicating the transaction.
If what you're worried about is wallet hacks, not disingenuous merchants, that's doable too. Instead of storing your money directly in your wallet, you'd have to store it in a smart contract, designed in such a way that your key is the only one that can move money out of it. However, limitations would be placed on the contract with regards to how much money can be moved daily. Such limits would likely be different for transfers to trusted escrow contracts and for irreversible transactions. If you needed to move more money, you could designate a trusted third party (let's say a traditional bank doing traditional bank things for identity verification) as being able to override these limits for you. Again, that would be their only responsibility, they would not have the right to move any of your money without your permission. This essentially relegates a bank to the role of an identity verifier who cannot take control of your money in any possible way except by colluding with a hacker who already has access to your wallet.
THe reason none of this exists is ecosystems and network effects, not technical limitations.