user4708: I've occasionally seen people online claiming they were victims of a double-spend because they handed over something of value in exchange for a bitcoin payment with no confirmations.
Although I understand this is theoretically possible, how would someone try this practically?  All available bitcoin clients would not allow you to make a transaction that spends an output that has already been spent, and the client would know about the first transaction very soon after it was broadcast.
Are there specialized double-spend-friendly bitcoin clients out there?
EDIT:  Please note: I am not asking for theory of any kind (especially not theory on how the blockchain / proof-of-work / waiting for confirmations solves the dobule-spend problem).  I am asking purely practically ... how does someone pull off a double-spend attempt?

user5157: I think the best way to explain this is to use the analogy of the old banker's cheque.
In the olden days when I was a lad we had a cheque book which allowed us to sign an instruction to pay someone a particular amount. 
Now if I was cheeky, I could write one cheque to Bob for ten pounds and another to Alice for ten pounds. The trouble was I only had ten pounds in my account and no overdraft facility. So when Alice cashed the cheque first, she got the money and Bob's cheque was bounced "insufficient funds". Cashing the cheque meant that she had succeeded in being the first person to put her claim to the bank, who then checked my account balance and agreed to pay.
Making a double spend attempt is exactly the same on the bitcoin network. You are contriving to sign two transactions to two different people when you know that your bitcoin funds are not sufficient to cover both payments. This is a simple string of text, not a physical cheque, but the principle is identical.
In this case the network is much faster than the old banking system, and on the bitcoin network, I think a transaction is visible to the whole bitcoin-world-network in under three seconds, so I would have to somehow force one transaction to be delayed in order to move my funds with another transaction. In any event the network will only accept one transaction.
If you wanted to create a transaction head on over to this link and have a look. It allows you to create a raw transaction and then broadcast it. I suspect you are going to have a go anyway, but it would be nice if you could try out your stuff on Testnet.

user8717: Edit
You could practically open two separate bitcoin clients (such as MultiBit and Bitcoin-QT). Prepare a transaction that is using the same input. As for output one would use the payee's address, while the other client would use your address (you're double spending right?).
At this point you'd just have to send the transactions at the same time and hope your payee has gotten the correct transaction instead of the double spend. I doubt there's a client that automates this procedure.
You could also make this happen with a higher success rate if you send the valid transaction directly to the payee's client, while you send the double-spend to the node of a pool. This would increase the chances that your double spend will actually make it inside a block before the other. 
Of course to do this would require you to get your hands wet with lower level bitcoin clients such as sx or directly bitcoind. Actually I'm afraid you'd have to program this functionality yourself studying the protocol and making sure you know how to broadcast to specific nodes instead of the entire network.

4708: <p>I've occasionally seen people online claiming they were victims of a double-spend because they handed over something of value in exchange for a bitcoin payment with no confirmations.</p>

<p>Although I understand this is theoretically possible, how would someone try this practically?  All available bitcoin clients would not allow you to make a transaction that spends an output that has already been spent, and the client would know about the first transaction very soon after it was broadcast.</p>

<p>Are there specialized double-spend-friendly bitcoin clients out there?</p>

<p><strong>EDIT:</strong>  Please note: I am not asking for theory of any kind (especially not theory on how the blockchain / proof-of-work / waiting for confirmations solves the dobule-spend problem).  I am asking purely <em>practically</em> ... how does someone pull off a double-spend attempt?</p>
 5157: <p>I think the best way to explain this is to use the analogy of the old banker's cheque.</p>

<p>In the olden days when I was a lad we had a cheque book which allowed us to sign an instruction to pay someone a particular amount. </p>

<p>Now if I was cheeky, I could write one cheque to Bob for ten pounds and another to Alice for ten pounds. The trouble was I only had ten pounds in my account and no overdraft facility. So when Alice cashed the cheque first, she got the money and Bob's cheque was bounced "insufficient funds". Cashing the cheque meant that she had succeeded in being the first person to put her claim to the bank, who then checked my account balance and agreed to pay.</p>

<p>Making a double spend attempt is exactly the same on the bitcoin network. You are contriving to sign two transactions to two different people when you know that your bitcoin funds are not sufficient to cover both payments. This is a simple string of text, not a physical cheque, but the principle is identical.</p>

<p>In this case the network is much faster than the old banking system, and on the bitcoin network, I think a transaction is visible to the whole bitcoin-world-network in under three seconds, so I would have to somehow force one transaction to be delayed in order to move my funds with another transaction. In any event the network will only accept one transaction.</p>

<p>If you wanted to create a transaction head on over to <a href="http://brainwallet.org/#tx" rel="nofollow">this link</a> and have a look. It allows you to create a raw transaction and then broadcast it. I suspect you are going to have a go anyway, but it would be nice if you could try out your stuff on Testnet.</p>
 8717: <p><strong>Edit</strong></p>

<p>You could practically open two separate bitcoin clients (such as MultiBit and Bitcoin-QT). Prepare a transaction that is using the same input. As for output one would use the payee's address, while the other client would use your address (you're double spending right?).</p>

<p>At this point you'd just have to send the transactions at the same time and hope your payee has gotten the correct transaction instead of the double spend. I doubt there's a client that automates this procedure.</p>

<p>You could also make this happen with a higher success rate if you send the valid transaction directly to the payee's client, while you send the double-spend to the node of a pool. This would increase the chances that your double spend will actually make it inside a block before the other. </p>

<p>Of course to do this would require you to get your hands wet with lower level bitcoin clients such as <a href="https://github.com/spesmilo/sx" rel="nofollow">sx</a> or directly <a href="https://en.bitcoin.it/wiki/Bitcoind" rel="nofollow">bitcoind</a>. Actually I'm afraid you'd have to program this functionality yourself studying the protocol and making sure you know how to broadcast to specific nodes instead of the entire network.</p>
