I like the idea of adding another step of confirmation by allowing the recipient owner (the new owner) to accept the ownership before receiving - might not be needed in simple cases but dealing with important smart contracts, this would be definitely valuable
I'd change the name of transferOwnership for something like initOwnershipTransfer. To be clear that "its a process" and no just a one time action. Maybe you want to keep "transferOwnership" for some compatibility matters, in that case its ok.
Instead of a double confirmation, I'd keep the new owner confirmation but I'd add a "revertTimeOut" parameter or something like that. In this way, the previous owner doesn't need to confirmate again but still has a chance to revert it if something went wrong.