So one of the biggest problems is interfacing with fiat. The transfer of funds can be automated (btc seller receives fiat from buyer's account, and btc buyer receives btc from seller's account simultaneously). However, there is no simple solution to get fiat into the buyer's client and no simple solution to transfer to fiat to the seller's client. This could all be solved if the exchange used fiat vouchers similar to the old Mt. Gox codes. These vouchers are always redeemable for btc so companies would pop up that will buy those vouchers from you for fiat.
At some point those vouchers need to be redeemed for fiat. That either means bags of cash or a traditional bank. To a bank any kind of voucher means money transmission and banks don't take too kindly to competition to the ACH system.