300 concurrent requests = 6 load balanced servers each with ~ 1ghz + ~1gb ram. all running apache with php.
have some slave mysql servers for just selects, and cache pages as much as possible (things that may be requested more than, lets say, 10 times before they are updated)
then another mysql server (dual 1.4 ghtz, > 1gb ddr pc2100, scsi <4ms seek) for the main database. hopefully this is an intranet project or you are going to be spending through the teeth on bandwidth.
this of course is the setup you'll want for web-acceptible request times... you could do it all on one quad processor machine with 16 gigs of ram (sun E450), but you really need a more scalable solution.
look here:
http://www.rackspace.com/complex/complex_configurations.php?ctid=0101-99999
looks like you'll spend $5000-$10000 a month if you outsource it. i would be happy to set this all up for you cheaper if you have the money.