I've finally figured out the bug and fixed it, well, more like worked around it.
The whole problem relates to GDI objects, in WinXp about 10,000 are allowed, Win2000 allows about 16,000, either way there is a limit on the number.
What I've found is that there is a bug in one of the docklets I've been using that constantly allocates GDI objects and never frees them up, when the 10,000 limit is hit in XP then the system exhibits severe problems with screen drawing. I traced it by using SysInternals process explorer tool and you can see ObjectDoc at 9,999 GDI handles!!
ObjectDock Tray Docklet Version 2.0 by Melchior Moos
Shows the sytem tray in an ObjectDock docklet. If you like the tray and want to spend some money to the project write an e-mail to nimix@gmx.net
I think the issue is that I use a CPU monitor in the system tray and everytime it updates (1 fps) the Tray doclet uses 2 objects and never frees them resulting in the graphic corruption in the end.
Regards
Kate
Additional Note: If you use the Tray Docklet then it generates a .png file in a cache sub-directory (xptheme) for each icon in your system tray, if you have a CPU monitor in your system tray like I did that generates a dynamic system tray icon then this results in a new .png file for each image, in my case I had over 69,000 1KB .png files within the directory.
Its a bit of a dangerously written docklet as this cruft builds up over time and the writer doesnt seem to have taken that into account.