Here is my proposal:
https://github.com/drltc/bitbond-proposal/blob/master/btc-trade.mdTLDR version: The BitAsset buyer must also post a bond to guarantee delivery, otherwise an attacker could do big no-show transactions to do denial-of-service against the whole market [1]. This is hard when the buyer has only BTC, my solution is to allow buying tiny amounts of BitBTC in an unbonded transaction, then "bootstrapping" into exponentially larger bonded transactions until the desired number of BitWhatever has been purchased.
This process may take a while, so I suggest only allowing BTC to be directly traded for BitBTC to minimize exchange rate worries. If you wanted BTSX or BitUSD, then you could simply use the BitBTC in the existing on-chain markets.
The tiny unbonded transaction is a user-to-user transaction -- the buyer and seller must find each other and privately negotiate the amount and exchange rate, then participate in user-to-user atomic exchange on the chain. (I suggest having some TITAN directory information published by the seller to facilitate this, a list of known trustworthy sellers to establish trust on the Ask side, and requiring a non-refundable 10% advance fee from the buyer to make sure the bidder is acting in good faith. The actual negotiation will likely be done by scripts on both sides hard-coded to trade small amounts at the peg.)
The bonded transactions can be done in a full decentralized on-chain market. Basically the market only does matching, and then the transaction proceeds as a bonded user-to-user exchange.
[1] This is still possible, but would be fantastically expensive for the attacker. I suspect no seller will complain about having their orders delayed -- and indeed a ton of new sellers will rush in -- when a repeat no-show buyer is effectively paying interest of 1% per day or more to the whole Ask book out of their own pocket!