You've mentioned that the sellers maybe put at a disadvantage here because the buyer may not sign the transaction, well, there are many tried and tested sites where this type of system works. Such as; localbitcoins, bitmit, coingig or even all those .onion sites - but these sites require you to fully trust them, as they expect the coins to be deposited in their wallet and the buyer presses a "release button", as opposed to a multisig address, where no single person can steal them or claim they've been hacked, etc etc..
Exactly: here we are trying to avoid the need for trusted third parties policing the transactions. And often they rely on a separate trust metrics for assessing the participants: for example, Bitcoin.de has a system of mutual ratings among users based on the number of successful settlements, and each user's rating is visible to all other users. But this requires a centralized database and someone to maintain it, and we don't want that.
Anyway, unless I've miss understood your suggestion, it is not possible to do as payments can not be "cancelled".
However (please correct me if I'm wrong), I guess it's possible to make a transaction that will pay part of the amount sent to the script hash to one address (the Seller) and part to another (the Buyer). If the Buyer reneged on his agreement and refused to sign and broadcast the transaction after receiving the goods, he would have to forfeit the bond.