The first thing to do is to tidy up your current system. Out of the box, apache is usually configured with lots of extensions you probably don't need (particularly the auth and proxy, also if you use SSL, but only rarely, then consider removing mod_ssl and running stunnel instead). Do enable mod_deflate. Look at all the other stuff running on your system - shutdown (and disable) any services you don't need.
Next, running suphp on a dedicated machine via CGI is usually a very dumb idea - use mod_php or fastCGI.
By making your system go faster, not only do you provide better service to your customers, but you'll reduce the memory footprint. So....
Install a PHP opcode cache if you don't already have one.
Start digging into the performance of your system - change your httpd config to start logging %D and look at the product of the URL frequency and %D to identify which URLs are causing the most problems.
Lower the threshold on your slow query log in MySQL - use this parser or similar to analyse the data (note that again you should prioritize based on the product of frequency and run time).
Add an auto-prepend to enable the gz output buffer compression.
Start recording the number of running httpd processes and compare this with the available less cache/buffers from 'free' - collate the data and graph it to work out how many httpd processes you can sensibly run - then change your httpd.conf to enforce this limit. Note that disk I/O is phenomonally slow - so you need a healthy amount of memory available for caching.
Start looking at whether your server is providing good caching information with content - or if clients and proxies have to keep coming back for stuff which hasn't changed (mod_expires, mod_headers)
But sometimes you do just need more hardware. I'd recommend considering a second server rather than just upgrading the one you've got - adding round-robin DNS is trivial - and you get the added beneift of better availability (once you've worked out how to handle the database replication).