How would I go about resetting my bitcoin client without losing these 'in limbo' transactions?
SatoshiDICE never got the transactions because they were never accepted by the network. There is nothing SatoshiDICE can or should do as the Bitcoin transactions for your wagers never confirmed.
Now why this is happening?
What appears to be happening is that your client has some double spend transactions.
That can happen a few ways accidentally (e.g., you have two copies of your wallet.dat and are making spend transactions from both) or purposely (you have a script that tries to wager with SatoshiDICE and then also attempt to double spend the bets that lose via race attack, Finney attack, etc. There are even situations where if you were specifically targeted, you could see funds on one confirmation but then when you spend them they are invalid -- but that is pretty easily preventable. Here are the various methods:
-
https://en.bitcoin.it/wiki/Double-spending#Attack_vectorsSo, the end result is you have wagers that never got processed and never will.
Unfortunately, the Bitcoin.org client doesn't deal well with these -- there is no way to manually remove the transactions using bitcoind.
The easiest thing to do would be to send your remaining funds to a new address in a new wallet and start clean.
A way to fix the wallet you have involves perofrming wallet surgery to remove the offending private keys (using pywallet) and then rescan.
My wallet was only ever used on one computer, and I haven't been making intentional double spends. No scripts either.
If this is a double spend issue is it possible to get my coins back using pywallet, or are they lost for good? Could you go into a little more detail on how I can remove these private keys using pywallet?