New method with 0.9+ built directly into core client:
-rescan Rescan the block chain for missing wallet transactions
-zapwallettxes Clear list of wallet transactions (diagnostic tool; implies -rescan)
It does exactly what it says - it rebuilds the transaction list from the officially confirmed blocks.
Naturally, get a reliable wallet backup first.