Es una pregunta interesante
Podemos intentar resolver el problema de varias maneras. Lo primero, para comprobar si tenemos conexión a internet lo mejor es, como tu ya has dicho, hacer ping hacia una dirección fuera de nuestra red. Por esa parte creo que el tema esta resuelto. En cuanto a la red interna, se me ocurre que podrías hacer un ping a la puerta de enlace (gateway). No saber de antemano la dirección de la puerta de enlace no supone un problema, siempre podemos averiguarla.
Por otro lado, si estas usando DHCP y WindowsXP podemos utilizar un pequeño truco para saber si alguien ha desconectado el cable de red. Cuando windows detecta que el cable esta desconectado, cambia la ip que le ha sido asignada por otra diferente, una por defecto (ahora mismo no recuerdo cual es). Solo tendríamos que comprobar que dirección ip tenemos y si se ajusta a al rango de direcciones ip que solemos usar, si no esta dentro de ese rango es que el cable esta desconectado. (Este truco lo usaba yo contra unos "listos" que desconectaban el cable de red para hacer cosas "malas" sin que los viera)
Si alguna de esas soluciones te gusta, podemos meternos mas a fondo con el código.