Проблема с VNC в том, что если комп за роутером в локалке, то вам нужно перенастроить роутер и пробросить порт через NAT. Если этого нельзя сделать — например это нетбук, который каждый день на новом месте (кафе-вокзал-аэропорт-подружка-офис), то я в сложных случаях ставлю сначала sshd который коннектится раз в пять минут на мой сервер, стоящий у провайдера и пробрасывает туда порт в обратку на висящий на loopback VNC. Удобно, конечно, если там линукс, но и с виндой можно извратиться.
Ну и teamviewer конечно рулит.
Была ещё классная статья про запуск ipv6 через одного из провайдеров IPV6 поверх IPV4. К сожалению не могу сейчас её найти. Суть в том, что вы получаете белый наружный ip6-адрес. Ну и можете запустить на клиентской машине какой угодно сервис с прямым доступом по ipv6.