If I had a portable media playing thing, I would get one with adequate size to hold my entire library. Currently that is 33GiB. It doesn't change much, so I'd say an 80GiB player would last me, oh, say a good 5 years at least? Knowing the manufracturing practices these days, I'd replace that device at least once before then.
On and said player would of course have to support FLAC... yes, that 33GiB of music is high quality, mass majority is FLAC or 320kbit MP3
Long story short, upgrade 1 item, upgrade all parts :(
The only time I've ever run into this issue was the leap from AGP to PCIe... and I've only made that leap with the hubby's comp, not mine. It wasn't horrible either, we were just forced to buy a new vid card when he got his new mobo/proc.
And I consider mobo/proc a single item, you always upgrade both at the same time :)
Most HDD these days are jumpered for Cable Select by default. If all your drives are set for CS, it works quite fine. Only thing to remember is if you wire a single device to a chain you should place it on the end of the cable. If you leave a dangling end the signal can reflect off the end and degrade performance (tho you'll probably never notice it).
SATA cables, however, are oh so nice. Ribbon cables blow a fat one.
I personally aim for $150 vid cards, but I'm not a performance freak. If it runs the game at a PLAYABLE framerate, I'm happy. I'm secure with my penis size and don't feel the need to compensate for it with speed like my roomie (he tries to get the most speed he can out of everything he owns).
From everything I've ever seen, SLI is just a stupid hardware gimmick to make the people who buy $400+ vid cards think that they need to buy two $400+ vid cards.
As for dual/quad core, by all means get it over a single-core chip, but don't go out of your way (I.E. don't blow more money on it than you were initially planning). It's certainly nice to have Firefox not bog down the game when it's refreshing your gmail, or some other rogue process bring the computer to a standstill by hogging CPU cycles *coughTrustedInstallercough*