How do I detect a double-spend? As a vendor, how do you detect a double-spend? I'm happy to tell end-users that I'm proceeding with a transaction on 0 confirms, simply assuming everything is fine. I'm selling physical goods and so I don't ship them until I actually have 6 confirmations. I only alert the customer if I actually discover a problem. But I still need to have a way to detect if a transaction is stuck vs a malicious double-spend. 

At what point does a transaction become suspicious? Besides manually looking up transactions on blockchain.org, how do you know a transaction is a double-spend? Monitoring all transactions happening on the network in order to match transaction inputs (as does blockchain.org) seems excessive. I'm looking for a solution I can implement using the bitcoind API.
Essentially, there is no such thing as a "suspicous transaction" and bitcoin is already set up to work in the way that you want.

Double spending is handled like this -- if two transactions spending the same input(s) happen in the same block, both will be rejected. If one transaction makes it into a block before the other, the first one will be accepted and the second will be rejected.

Now, if two transactions entered the network simultaneously, but at different endpoint, by the time the next block is mined it's likely that they would have made it into the same block and thus be simultaneously rejected. It's also possible that a block is mined containing one transaction, and all subsequent blocks containing the other transaction will simply be rejected. The third and least likely scenario is that two blocks are mined simultaneously -- each containing one of the competing transactions -- and this would cause a fork in the blockchain. However, this is the purpose of having confirmations, and by the time you reach 6, it's extremely likely that the forks have been reconciled and that one of these transactions will be rejected along with the rejected fork. 

So, if double spending occurs exactly one of three things will have happened :

1. You will have the bitcoins (even though they were promised to someone else)
2. Someone else will have the bitcoins (even though they were promised to you)
3. The original owner keeps the bitcoins.


Since you're not dealing with transactions that occur in real time, you only need to worry about whether or not you receive your bitcoins. After a number of confirmation, you can be confident that there was no double spend detected. 

You noted that you wanted to identify suspicious transactions using the bitcoind API, but as mentioned before, there no way to identify a transaction as being inherently suspicious. If money shows up at your bitcoin address from a sender and you want to be confident that the transactions won't somehow disappear from the blockchain later, you could check the for forks in the block chain that might contain transactions with the same inputs, but simply waiting 6 confirmations, as you're already doing, is more than enough. If you don't get your coins, just let the customer know, and if the customer didn't double spend, he or she can just resend the payment. Essentially @Nate-Eldredge is right.