If your analyser trace reveals no clue as to why you were disconnected, my next move is usually an oscilloscope. It can be triggered from the rising edge of D+ as it goes to full speed idle after the disconnect. Then you can have a look at the preceding SOF, which should be 3ms before the trigger.
Disconnect detection is done at the EOP of the SOF. The EOP is elongated to 40 bits (from the normal 8 bits) for the SOF (and only the SOF) which makes it quite distinctive. During the last 8 bits of that the host will monitor the bus voltage. If the bus is at a differential voltage greater than 525mV, the device may be disconnected (and must be disconnected at greater than 625mV).
If you see such voltages then you need to work out what's causing it. I've seen hosts manage to tune their termination resistance too high, which cause an overvoltage. I've seen devices which have terminations just a bit too high resistance which eventually be seen as a disconnect. I've seen hosts which glitch at certain times (such as resume) which is seen as a disconnect if it overlaps a SOF. I've seen SOFs which were suddenly twice the voltage of the previous one, one end of the wire had removed their terminations. Working out which end that was required a current probe to show there was no current flowing into the device terminations.
If you don't see such a voltage, then the most likely answer is a problem inside the host.