Unfortunately, most web servers are just plain I/O bound. I know somebody that went from a single 300 MHz cpu to dual 750s, and the difference to the users were nominal. The nightly batch jobs run much quicker now.
Before looking at faster CPUs, more memory, and bigger hard drives, make sure the machine is setup right to begin with.
Things like having DMA turned on, and having noatime and async in the /etc/fstab file for your data drives can really help.
If you're using swap heavily, upgrade memory, if you can't then add lots of drives in parallel to build your swap, since the linux kernel will automatically stripe across them for it's swap space if they're the same priority.
Running a database, build a 1+0 raid set, or even raid 5 can increase performance for a lot of concurrent accesses.
Check your error logs for sig faults. If an apache is sigfaulting 5 times a minute, it's gonna cause some performance problems.
But if it's running ok, just leave it alone.