So how about this:
1) Only connect to nodes you trust (like major pools).
2) Don't allow incoming connections
3) Modify the bitcoind not not forward your tx to your peers.
4) Modify the bitcoind to halt tx if double spend is detected.
5) Write an API which lets you know what % of hashing power has your tx in their memory pool.
Then you can see which pools have notifies you of the tx and decline tx if double spend is detected.
So hypothetically:
Lets call tx A the payment to me, and tx B the double spend back to attacker.
My merchant node connects to the top 10 pools (roughly 80% of hashing power).
Since those pools will relay tx to me I can determine which pools have seen my tx, which have seen the double spend, and which have seen neither (yet).
If attacker sends only tx B to major pools then I will never see tx A (because it loses all races) and will almost instantly see tx B.
If attacker only sends tx A to major pools then he has a less than 20% chance of getting the double spend (actually less because unless all other miners are malicious my tx will win at least some of those races)
If attacker sends tx A to some of major pools and tx B to some of major pools I will see both hit my node. At which point I keep attacker's funds (on the % of tx which clear) and decline the tx on grounds of attempted fraud using the cryptographically signed double spend as proof. This creates a unique cost to attacker not present in CC fraud. Attacker risks losing funds on a failed double spend.
If the above method is combined with "assurity contracts" with major pools the merchant has even higher confidence (pool agrees to not replace tx it has "insured").
If the above method is combined with a "network listener" which is a node with hundreds of connections to random nodes globally which looks continually for double spends then even attempted (but likely doomed to failure anyways) double spends can be proactively detected before they even get to the merchant's processing node.
None of this prevents Finney attacks due to the fact that "tx B" is unknown but having even 1% of network hashing power is prohibitively expensive (~$1M today and likely to climb over time). Finney attacks are also time bound and that can be exploited to make them uneconomical for small tx. The attacker needs to delay broadcasting the block long enough to complete the tx and during that delay the chance of another node finding a block is ~0.16% per second. This produces an expected cost to the attacker of 8.3 bitcents per second (current block reward value)
.
Safe delay time = (purchase price / 0.083 BTC) in seconds (or ~ 1 minute for every 5.0 BTC in value)
Example:
Selling a 1 BTC game code. That has a time value of e time value of 12 seconds block delay is ~1 BTC. So wait 20 seconds and THEN release the code. Lets look at the long run effect of that.
20s * 0.16777% = ~3%.
97% of time attacker "wins" 1 BTC
3% of the time attacker loses 50 BTC block reward.
0.97* 1 + 0.03 *(-50) = -0.5 BTC. The attacker has a negative expectation. He is gambling and you are the house (w/ a 50% house advantage).