Сделать прямой HTTP-запрос к какому-нибудь серверу, который возвращает в ответе адрес подключившегося, например http://www.myip.ru, распарсить ответ и сравнить адрес c тем, что является интерфейсным в дефаулт-маршруте. Только запрос надо делать не готовыми средствами, не браузером и не функциями из его DLL-ок, а напрямую устанавливая TCP-соединения (иначе браузер или его DLL-ка могут совершить запрос через прописанный в настройках браузера/системы HTTP-прокси, и тогда вы увидите адрес прокси, даже если обладаете белым адресом). Еще лучше - если найдется сервак, который возвращает XML-ответ.
Никакого облома. Либо роутер выполняет первичный нат, либо вторичный нат (если уже провайдер натит). Либо ни он ни провайдер НАТ не делают - тогда на компе для доступа в инет должен быть белый адрес, либо комп должен лазить в инет через HTTP-прокси или через сокс (а тогда надо коннектиться по специальному адресу). В любом случае, если комп натится (хоть один раз, хоть многократно) - адрес в accept на сервере будет отличаться от того адреса, от имени которого комп шлет пакеты (а шлет он их от имени IP-адреса на том интерфейсе, через который пакет пойдет к дестинейшну, если адресов несколько - то от того, в чьей сетке гейтвей, через который пойдет пакет (если под виндами), или от имени первичного(если UNIX)).