I would say that Windows 7 is behaving correctly here, and that XP was wrong to react immediately to a cable pull. TCP was intended from the beginning to be highly fault tolerant, and specifically to allow cable pulls or indeed router outages without disrupting existing connections.
Is there any other way [etc]
The most reliable way to detect a TCP connection outage is to send to it. After enough buffering, retries, etc, TCP will give up sending and deliver a reset to the caller of send(). But it can take a while, and several calls.