Interesting post. I have seen people keeping around a lot of machines. For me, multiple machines produces too much noise :-(. I personally have been trying to keep a single machine + laptop. Usually at the end of the product cycle (such as now) I have to maintain two machines since closer to release code base forks and RC branch only gets selected fixes while active development continues in the branch that goes towards the next release.

I don't need separate test machine since our team employs dedicated check in / test machine. I run a subset of tests on my primary machine (it takes about 30 minutes), then obtain a cookie on the team checkin machine (also called 'buddy build machine'), submit changes and then run build and tests on the shared machine via terminal server (takes about 3 hours). If everything goes well, I release the machine and release script automatically updates 'safe sync' label to my change list.

I run Windows 2003 Standard Server on my primary box. Server is more convenient since I can open terminal server session to my own machine and run tests in that session while continue working on the primary console.