to do a SUCCESSFUL double spend requires alot of speed and hardware. but to send out 2 transactions to 2 different addresses using 2 clients but only using one private key supply does not require expensive equipment. A successful double spend requires a confirm on both sides. meaning the 10 minute wait. but sending out 2 transactions that don't require waiting the 10 minutes is piss easy.
Not easy. Let me se you try it.
accepting unconfirmed transactions should only be allowed on products with delayed delivery. such as bitpay which can inform merchants that the payment has failed in 10 minutes and the merchant still has time to email the customer to attempt the payment again before losing their next-day delivery slot.
it is never EVER acceptable for instant access content.
It's fine for a great many things. A movie streamed over the Internet, for example, because it can be cut off if a double spend is detected. Game or digital content licences (on Steam or iTunes for example) can be reversed. Online services (monthly access, or even
daily access) can be reversed. All of this with a simple transaction, not using blockchain enforcable contracts.
https://en.bitcoin.it/wiki/ContractsUsing contracts, particularly example #7, opens up some rather creative solutions beyond the simple transaction. The "loyalty card" system can be implimented within an android phone, without a actual card, and the balance revoked at will, so one could use it as a running balance for a vending machine at work as easily as one could use it at av ending machine that they never expect to visit again. One could use #7 to pay for gasoline at the pump, again without a 10 minute wait. Even the most basic contract is significantly more difficult to "double spend", and may actually be mathmatically impossible under certain conditions.