The most likely source is that these are non-confirming or double-spent transactions being sent to you. This is why you don't trust 0 confirmation transactions, and why they aren't added to your balance.
You can look up the transaction hash numbers of the individual transactions on blockchain.info to see if they have been included in a block or not.
If the transactions are in the blockchain, then your wallet.dat file is messed up. The best solution is to first backup the wallet through the file menu, and then close Bitcoin, then restart with the -salvagewallet option which builds a new wallet file only using the private keys and not old transaction data.
Thanks for your response. My wallet seems to have sorted out its problems eventually.
1. All but the last transaction are part of the block chain. These transactions occurred over a period of the last 45 days.
2. The last transaction took a while but went into confirmation day before.
3. Until yesterday all old transactions were showing as 0 confirmation.
4. Today morning, voila, all of them are back confirmed.
I did not know about the salvagewallet option, thanks for that. Tucked away in memory for the future. Did try -rescan which didnt seem to work.