I upgrade when I need to--when my programs take longer to load and I notice the slowdown from newer programs.
I play counter-strike at 1600x1200 just fine right now and DivX, office, etc all work perfect.
I've not upgraded in 2 years. Currently run 1.33 GHz Athlon-C, GeForce3 TI200 and 512 PC133 @ CL2.
When I upgrade I make sure, at a minimal that I will notice a decent improvement like three times the CPU clock speed (twice just can't cut it). That means, my next upgrade should be around 4 GHz w/ 1000 MHz bus P4 with 2GB DDR400 (or DDR500 by then?) lol. So give it a year I figure is my next upgrade. Will I necessarily need it? Not really. But for certain tasks like games I will. Everything else should still run fine. Hell my friend who is a professional programmer and spends 24/7 on his machine still uses a PII 400 MHz. Next time I'm going to get it right and not go cheap on the "other" subsystems, namely harddrives. Raid 0 (striping) on WD Raptors 10k RPM seems a good idea. That will alleviate some disk I/O bottleneck. Figure $1500 US is the max I'll spend. That means I roughly spend $500/year if you average it out on computer hardware. I buy about as much in programming books and software easily so no biggie. Its probably better for me to start spacing out upgrades yearly though. I'd imagine $500/year would go much further in terms of performance than simply buying it lump at once. Hey maybe I'll start doing this.