From http://www.usbmadesimple.co.uk/ums_6.htm, section Negotiating High Speed.
The device leaves its D+ 1.5K pullup resistor connected, and does not terminate the lines with 45 Ohm resistors as it would for high speed. But it drives high speed current (17.78mA) into the D- line for at least a millisecond. Now, remember that the hub is applying a reset condition to the lines, so effectively is already terminated as for high speed data. As only one end of the link is terminated, the hub will see about 800 mV on D-. This condition is called a K-chirp.
A full / low speed hub will pay no attention to this condition, but a high speed hub will detect it using its differential receiver and the absence of a squelch signal.
If the hub is high speed capable then it will monitor the K-chirp from the device until it sees it completing. It must, within 100us, send a series of K-J chirp pairs to the device. This means that it will inject 17.78 mA alternately into the D- and the D+ lines. Each of these chirps lasts around 50us, and there are no gaps between them. The device has to see at least 3 chirp pairs before assuming that the hub is high speed capable.
At this point the device disconnects its 1.5K pullup resistor, applies the 45 Ohm high speed terminations (using its full speed data driver in SE0 mode), and is thus in a state to perform high speed data transmission and reception.
So, when you plug a device in, it'll put 17.78mA of current into the D- line (called a K-chirp). A full speed host will ignore this signal and transmission will continue using full speed.
But if the host is capable of high speed transmission, it'll wait until the initial K-chirp is complete. Then, within 100us, the host will put 17.78mA alternatively into the D+ and D- line (called a K-J chirp pair), each lasting 50us. If the device sees at least 3 chirp pairs, it'll initialize high speed transmission.