I've only used a linksys router for this purpose, but d-link should work fine too. Just make sure whatever router you get allows TCP/UDP port forwarding.
Your real problem as I see it is that in order to route VPN traffic through your router you need to be able to forward traffic from the VPN port to the correct destination. This is made difficult when, as you say, the host machine is running a dynamic IP address.
That said, my guess is that you actually have the host machine on a private IP range behind the router, so the solution is pretty easy: Turn off DHCP on the host machine and assign it a static local ip address, then set port forwarding to route VPN traffic through the router to that address.
The final trick is to visit dyndns.org. In order to simplify things on your client end, you can get a free account there which will allow you to route all traffic to, say "example.dyndns.org" to your VPN host. In order to keep the name server updated with your IP address, they can lead you to a number of windows services that keep things updated for you. Alternately, I've heard word that Netgear makes a router with a built in function to keep dyndns updated. You might want to check that out before you buy your dlinks.
Hope that's helpful.