If the internal IP changes then it means he has DHCP (Dynamic Host Configuration Protocol) enabled on the router and thus the IP of his machine will change everytime the computer connects to the router. ADSL uses dynamic IP aswell for the external IP, to overcome this problem of keeping track with the router's external IP you must configure DDNS (Dynamic Domain Naming Service) on the router. DDNS is when you link the router's IP address to a domain name that you create for free at http://www.dyndns.org
e.g: the domain name that you create is router.office-on-the.net and then after you have configured the router's DDNS the domain name's IP address will be updated on a timely basis according to the external IP. To overcome the problem of the internal DHCP you will see that most routers have a ARP (Address Resolution Protocol) table on them that shows the IP address's of all the host's connected to them. All you do then is to configure the router to pass any traffic it recieves on port 3389 (That is RDP (Remote Desktop Protocol)) to the desired internal IP you want. Open RDP Connector on your computer, type in the DDNS domain name you registered and configured the router to use in the RDP Connection field, and click on connect. The router which you configured to use DDNS will see the RDP incoming connection on port 3389 and then it will pass the traffic to the internal IP you selected. Now you have a RDP connection to the internal IP on the other network. I think the firewall may block it on the other computer or the antivirus as it is an external connection. You can configure the router to forward many other ports this way like SMB (Server MEssage Block) port 445 to the internal IP or telnet on port 23, ftp on port 21 an so on.