Well, one way you make hardware scalable is to "load balance" your site across multiple servers. You're running into serious costs at this point, because in a true load balanced environment, all of your servers must have fully licensed copies of your software installed on every single box.
In our environment, we do clustering, but it is strictly a "fail-over" type of environment. In this scenario, for instance, our fully licensed version of SQL Server 2k can go on one machine, which is our primary, and be legally installed on a second IIF that server is strictly in a fail-over role.
That is, if something goes wrong on server1, server2 picks up services while we fix server1, and then move it back. So at any one time, you only have 1 server running an instance of SQL Server.
Now, in a load balanced environment, you would have a cluster of servers that are all sitting there communicating with one another. As requests come in, decisions are made as to which server handles the request... usually the one that is least busy. In this way, the more requests that are made, the requests are spread across more and more servers, and the users never know the difference.
It can get extremely complicated, and I'm not a network admin, so I'd be unable to provide you with detailed instructions on how to set up such a system. Clustering alone was a real mind bender. We just finished setting it up, and although we love it now, we were hating getting things up and running.
Now, there's also multi-processor machines to think about in the hardware arena. Coming with .NET is true multi-threaded environments. I haven't personally worked with it yet, but MS is touting it as a new feature of .NET. In this type of environment, you write software to be able to take advantage of multi-processor environments so that when large routines are run, you dole out the workload to many "worker bees", or threads, that can run simultaneously on more than one processor. In this way, work is completed faster. However, you must have the hardware (n processor machines) in order to make it an effective approach to writing software. Otherwise, you're wasting your time.
You can also setup fibre arrays to store your data. Again, this is a clustered environment, where you have a set of "headless" servers that serve no purpose other than processing requests, and all the data is stored on shared storage (the fibre array), with fibre channel routers connecting the storage to the servers. This is not so much scalablity as it is lightning fast data access and storage, which can help support and enhance a scalable environment.
Well, that's what I can think of right now as far as scalable hardware goes. Just keep in mind, though, that all the scalable hardware in the world won't help a lick if you don't write your software in such a way to take advantage of it.
good luck!

paul
If you have any more specific questions, post back, and I'll ask our network guy to see what he might be able to add to the discussion. He's much more knowledgeable about hardware types of issues that I am.