How do people actually try double-spends? 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?
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.