According to section 10.2.8.1 of the USB 1.1 specification:
Section 7.1.7.3 describes the requirements of a hub to ensure all upstream resume attempts are overpowered with a long reset downstream. Root hubs may provide an aggregate reset period of at least 50ms. If the reset duration is controlled in hardware and the hardware timer is <50ms, the USB System can issue several consecutive resets to accumulate a sufficiently long reset to the device.
Don't know if it's your problem or not, but a reset on a root hub should last at least 50 ms, not just 10. Here's the sequence I use, and haven't had a problem with devices not resetting properly (but maybe I just haven't run across the correct device yet):
Clear Port Enable Bit
Wait 100 microseconds
Verify Port Enable Bit is Clear, Exit if not
Set Port Reset Bit
Wait 100 microseconds
Verify Port Reset Bit is Set, Exit if not
Wait a minimum of 50 milliseconds
Clear Port Reset Bit
Wait 100 microseconds
Verify Port Reset Bit is Clear, Exit if not
Verify Port Connect bit is still Set, Exit if not
Set Port Enable Bit
Wait 100 microseconds
Verify Port Enable Bit is Set, Exit if not
Wait 10 milliseconds
Continue with Enumeration Process