USB intermittently not working - requires restart - what to try next?
The first step in diagnosing the problem is to create a user account and see if it happens for that user. If it still happens, it's probably hardware but could still be software. To verify it is not, then remove any software that installs Kernel extensions (VMWare does this, as well as USBOverdrive, SteerMouse, etc…) and see if it still happens.

The fastest route is probably taking it to the genius bar, even if the machine is out of warranty. They have tools that aren't released to the public that go much deeper than any commercially available hardware diagnostics software.