Trying to keep a machine up to date, with the exception of RAM, is a fools game. Either the parts aren't replaceable (CPU, graphics card) or they are more expensive than the marginal improvement is worth.
Instead, count on adding disk storage with external Firewire or networked drives *better from a backup point of view anyway* and plan on replacing the entire machine when you outgrow it *because by then you will want to use software that requires new CPUs, new OS and or new graphics cards anyway*