So far it has been "safe enough" to accept zero confirmation transactions for in person deals or deals for low value digital media.
In the near future this might change with new mining protocols
stratum and
getblocktemplate gaining more and more ground as they are necessary for efficient ASIC mining. These protocols give control about which transactions to include in a block back to the miners (in contrast to pool operators as in the old getwork protocol).
The Bitcoin network does and has always allowed replacement of zero confirmation transactions within a miners system. This means a miner can and always could replace a zero confirmation transaction by another one. If the newer tx has a much higher fee he has a high incentive to do so. With the relatively centralized getwork protocol the power to do so rested mostly with the pool operators. With the new protocols it will not be possible to point a finger at anybody systematically doing double spending transaction replacements. I expect a high percentage of miners to do it as long as it is profitable.
Work in this direction:
https://bitcointalksearch.org/topic/reminder-zero-conf-is-not-safe-1000usd-reward-posted-for-replace-by-fee-patch-179612 Reminder: zero-conf is not safe; $1000USD reward posted for replace-by-fee patch
I can see Bitcoin clients coming up that systematically try to double spend every single transaction they make. Pay your drink, walk outside, click the double spend button, profit.
IMHO it would be nice if zero confirmation transactions were still "safe enough" in 2015.
edit: improved solution further belowThere has been a suggestion by unabridged quite a while ago that I think would be a relatively simple yet effective solution:
https://bitcointalksearch.org/topic/penalizing-double-spends-54746 Penalizing double spends
Basically it goes like this:
If a miner can come up with the same unspent previous output used twice he can claim this previous output as an additional transaction fee ("double spending fee" if you like).
Transactions that only changed the transaction fee must be excluded.
It might be beneficial to give half of the "double spending fee" to the miner of the previous or next block so that the penalty works for the miner himself, too.
There are other ways, but this seems like a good approach. It does not help against the Finney attack but it is a huge improvement. If a merchant listens for 10 secs before accepting a tx he should be relatively safe with this change.
Unfortunately this means a hard fork. Do you think this is realistic? Should this be made a BIP?
Background info:
https://en.bitcoin.it/wiki/Double-spending