It is difficult. If the transaction has already been confirmed in the blockchain, the entire chain would have to be rolled back, by a sufficient majority of its mining nodes. If not, it can be done through a combination of restarting nodes and using the bantx runtime parameter. But all of this is designed to be used in a rare emergency, not for everyday use. The point of blockchains is not to forget.