If you've been messing with your wallet.dat file, and "lose" a bitcoin in the process, this tip might help you out. (This is probably old news for the long timers, but I think this might benefit someone!)
If you start bitcoin with the -rescan option, the block chain is rescanned looking for any bitcoin transactions that pertain to your current wallet. So make sure you try that!
Here's what I did to lose, and subsequently find, a bitcoin.
1. I've been running my client program, where I have say 50 Bitcoins.
2. I ended my client program
3. I backed up my wallet.dat file, and then renamed it to wallet_50btc.dat
4. Start the client program, and generate a fresh new wallet with a new wallet ID, new private keys, etc.
5. Copy my new Bitcoin Address to notepad
6. Terminate the client program
7. Rename wallet.dat to wallet_0btc.dat
8. Rename wallet_50.dat to wallet.dat
9. Start the client program. All looks good, I have 50 Bitcoins.
10. Pay 1 BTC to my new Bitcoin Address that I had copied to notepad.
11. Wait for at least 1 confirmation. (I wanted to make sure that I got my change!). Now my balance is 1 less, i.e. 49 BTC.
12. Terminate the client program.
13. Rename wallet.dat to wallet_49btc.dat
14. Rename wallet_0btc.dat to wallet.dat
15. Start the client. The wallet is empty. Where'd the 1 BTC go?
(The answer is that it's in a block that was already received and processed (in step 11), and so Bitcoin isn't going to process it again, unless instructed to. They aren't really lost, they're hidden in the Block Chain, and your client program isn't going to go look for them, unless you tell it to. The client program thinks it has already processed all those old blocks.)
To re-find the lost coin:
16. terminate the client.
17. run the client with -rescan option. After processing all the blocks, the 1 BTC shows up in the client.
Hopefully this helps someone find some lost Bitcoins. If so, I'll gladly accept a cut!
Reference:
https://en.bitcoin.it/wiki/Running_Bitcoin