It seems like there is really no great way to exchange USD for BTC. Having to trust an exchange with your private keys is undesirable. I'm wondering if there is a way to utilize the convenience of an online exchange without needing to trust them with your private keys. So two questions:
Are there any exchanges which do not require control of the private keys? I am aware that Coinbase offers a multi-sig vault but I'm talking more about zero control, zilch, nada, private keys on your local device only.
Is there a problem with the following exchange model? The exchange manages all the market orders and matches buyers and sellers to transact directly. The exchange communicates the terms of a transaction to the BTC seller's wallet (like the blockchain wallet) and tells the seller that he has X minutes until the terms are void. The BTC seller's wallet finalizes the transaction. The transaction requires the exchanges signature and the seller's signature. The seller signs the transaction using his private key and forwards it to the exchange. The BTC buyer sends money to the exchange. The exchange then signs the transaction and sends it off to the network. Once the transaction is confirmed in the blockchain Y number of times (to avoid double spending), the exchange forwards along the money to the BTC seller, keeping a commission for himself.