It is not quite that easy to pull off a double spend. Most (virtually all) nodes will reject and refuse to relay or include in a block the second transaction they see.
So you broadcast a tx paying for a product then any node which sees that tx will reject the double spend back to yourself.
If you send the "double spend" (the tx back to yourself first) then there is a good chance the merchant will not see the "good spend" as all the merchants peers will drop it before it gets to the merchant.
0-confirm should be considered untrusted but it isn't as trivial as pay someone, pay yourself w/ fee and win but yes that is the general concept.
I assume blockchain.info sends first tx to 1st half connected peers (about 500) and second tx to 2nd half connected peers (about 500) at the same time. Then merchant bitcoin-qt see 0-confirm tx with 50% likelihood and reject the one going to yourselves with a fee. Obviously, half miners have your tx with a fee, but this tx is almost sure to be included to the blockchain as the 2nd half of miners with no fee transaction are not likely to include it to blockchain quickly
Propogation is very fast. It is highly likely one tx or the other will rapidly out pace the other one and as it does it "cuts off" more and more of the network from the other tx. If the merchants tx out paces the "bad tx" it will end up at a super majority of the network nodes and "isolate" the bad tx and the reverse is also true. It is simplistic to assume that sending tx a to half your peers and tx b to the other half will ensure each one gets to 50% of miners. It is far more likely one tx ends up in the memory pool at ~100% of miners. Also propogation beyond the first peer is chaotic. Some nodes as slow, some are fast, some may have few unique peers some may have hundreds or thousands. Many of your peers have the same peers so the two tx are going to race almost instantly.
I am not saying it is impossible to pull of a (non hashpower related) double spend but it isn't as easy as 1, 2, 3, click and win.Merchants looking to accept 0-confirms shouldn't do it casually but there are methods they can take to improve double spend detection and prevention. The merchant should maintain multiple geo diverse listening nodes which have a high number of inbound connections. These "listening nodes" can communicate out of band with the merchants main "processing node" and look for double spends. While a single node has a limited view of the global network multiple nodes sharing information have a much better view. If one of the listening nodes detects a double spend they can alert the merchant and halt the transaction. The merchant can automatically institute a small delay between notification of payment and release of goods. This makes if very unlikely that an attacker can both propagate the network to miner and not be seen by any of the merchants listening nodes (which are unknown to the attacker). Imagine a merchant with 5 listening nodes and an average of 1,000 inbound connections. There probably is some overlap but lets say the merchant sees 3,000 unique peers and lets assume the network consists of 10,000 nodes. The "bad" tx would need to make it to miners without it being relayed to any of the 3,000 nodes the merchant is connected to, otherwise they will relay it to one of the merchants listening nodes which will detect the attack. Pulling that off in a chaotic network would be a challenge.
The larger risk in 0-confirm txs is the attacker exploits a flaw in tx relaying by nodes, the attacker performs a Finney attack, or the attacker is assisted by "dishonest" miners who are willing to do an in memory pool replacement for a bribe. These types of scenarios are hard to defend against so a merchant should be very aware of the risks of 0-confirm before considering accepting them.
Nothing in this post should be taken as "0-confirm" is safe. Most merchants should likely NOT accept 0-confirm transactions, however not all transactions are have the same risk profile. A site selling $5 css website templates is a different story than an exchange accepting $5,000 deposits. Someone looking to steal website templates will most likely just pirate them rather than try to pull off a double spend. For high margin, low value, low risk items the benefit of strong double spend detection may warrant the risk. Remember the fraud rate of credit cards is not zero either, and online merchants are able to turn a profit.