Hi Dave
An active full-speed USB connection will have the host sending a start of frame once every 1ms.
If interference is causing a suspend (sleep) it means that the interference has resulted in the device seeing the idle condition for longer than 3ms. Since this was not induced by the host the device will be in suspend mode but the host will still be sending the USB framework (start of frames every 1ms).
The device will be waiting for the resume state to be detected, which is an inverted idle period of longer than 10ms. Since the host is however still sending actively this will never be detected.
I therefore think that such a state is not recoverable without the host sending a resume state, which means that it needs to stop the active state (eg. send a real suspend) and then send a real resume - alternatively it could send a reset and re-enumerate, which is effectively what happens when unplugging and plugging again. Some classes will be sending data as well and will recognise that the device has a problem and automatically reset to try to recover (after a certain timeout).
Consequently I don't think that USB can tolerate such levels of interference. What I don't know is whether the level of interference is the problem (i.e. so much energy that the screening and differential mode are inadequate) or whether it is due to a weakness (eg. inadequate screening, badly connected cable earthing, or sensitivity in the circuitry). Make sure that the USB cable screen is not connected to 0V of the board but instead connected to the housing - this is a common mistake according to to an EMC tester that corrected a design of mine once - sometimes I also see ferrite beads in the grounding path, plus ESD protection on the lines.
Regards
Mark