On the router, you need an IOS which supports Virtual Private Dialup Networking (VPDN).
ROUTER CONFIGURATION
! Substitute with actual username(s) and password(s):
username [username] password 0 [password]
vpdn enable 
no vpdn logging 
! These IP addresses will be dynamically assigned to clients:
ip local pool RTP-POOL 192.168.101.1 192.168.101.254 
vpdn-group 1 
! Default PPTP VPDN group 
accept-dialin 
protocol pptp 
virtual-template 1 
local name cisco_pns 
! 
interface Virtual-Template1 
! Clients will connect to the following physical interface:
ip unnumbered Ethernet0 
ip mroute-cache 
no keepalive 
peer default ip address pool RTP-POOL 
ppp encrypt mppe 40 
ppp authentication ms-chap 
CLIENT CONFIGURATION
This walkthrough describes Windows 2000. The XP setup is probably different since MS likes to play games with us, but you should be able to figure it out.
- Right-click on "My network connections" and click Properties
- Double-click on "New connection"
- Click Next, select "Connect to private network via Internet"
- If you want the VPN connection to automatically dial up and ISP for you, select this. Otherwise, select the first option.
- Enter the IP address of your Cisco router (use the IP address of the interface you specified, e.g. ip unnumbered Ethernet0)
- Select All users
- Type a descriptive name for the VPN connection, e.g. the company name
- Now click "Finish" and a password prompt will appear
- Type the username and password you specified on the router
- Check the Save password checkbox and click Connect
Et Voila!
You should now be able to access resources on that network as if you were locally connected.
IF it doesn't work, check the following on the router:
- Verify that the GRE protocol is permitted, and that clients can reach TCP/1723 on the router interface. Hint: The client may be sitting behind a firewall too.
- If you are running NAT on the router, add "ip nat inside" to the Virtual-Template 1 interface.
Unfortunately, troubleshooting on the client side is near impossible, the only error message I've been able to get is "619: The port was disconnected", and a "More details" button that recommends that you "reboot in case the changes have not been loaded correctly." *sigh*