Intermittent problems are the hardest to solve. Especially over a bulletin board where we can't see the system itself.
On the other hand, "too many connections" is a good guess and a good place to start because you can test that fairly easily.
Get some info on monitoring the health of MySQL. Check the number of connections when that problem happens.
We found that there were some conditions on our server that caused the machine to run out of RAM and when this happened, Apache slowed to a crawl, and when that happened, it was easy for 100 MySQL connections to open up so the error was very misleading. It was a RAM problem caused by a defective Perl script that made the whole thing look like a MySQL problem.
Truthfully, you're probably going to need a good sysadmin who is skilled at sniffing these things out.