To make a long story long, there are a few hurdles to overcome, some of which are technically complex and some of which might simply be out of your control.
One or both of you may be behind a NAT router, which means that the IP address your computer has is not necessarily the IP address which people on the internet see when communicating with you. If you go to http://www.whatismyip.com/ and the IP address reported is not the same as the IP address on your computer (using ipconfig or winipcfg, depending on what version of windows you have), then you’re behind a NAT router.
If it’s your NAT router (i.e. a firewall or a residential gateway), then you need to figure out how to configure it so that incoming connections get routed to the appropriate computer. That’s complicated and hard to explain, and how you do it differs among router manufacturers, but here’s a brief explanation. Your computer has an IP address, such as 192.168.1.5, and you need to configure the router such that file sharing traffic needs to be redirected to 192.168.1.5. File sharing traffic uses particular port numbers, which I believe are 137 and 139, but you’ll have to look that up somewhere. So what you’d want to do if that’s correct is tell your router “all traffic on ports 137 and 139 goes to 192.168.1.5”. Then you need to find out from your router what your real (non-NAT) IP address is. This will be labeled “WAN IP address” or something. This is the address your friend will use to contact your computer. So in a perfect world, your friend could now type \5.4.3.2\sharename\ into windows explorer, and you’d be on your way. Of course, there are usually more issues having to do with authentication and workgroup association, but I’m assuming that if you’ve done file-sharing on a LAN level, you’ve figured that stuff out. In addition, your “real IP address” can change, since it may be dynamically allocated, so you might need to check it every once in a while.
However, often times you’re behind a NAT router which is out of your control: your ISP may be using NAT for security or to save IP addresses. If this is the case, you’re completely out of luck. Furthermore, your ISP might simply have a policy of blocking incoming traffic, to prevent you from running servers on your connection. These problems can often be overcome by switching to a “static IP address” connection, which is generally intended to be used in a situation where you want people to be able to open incoming connections to your computer (I’ve seen ISPs offering this type of service targeted at gamers, since these same problems come up when playing some network games over the internet). Static IP service is almost always more expensive, though.
This all ignores ticker’s suggestion of a VPN, but in order to set up a VPN, you either need to solve these same problems, or you both need to connect your VPNs to a 3rd party which doesn’t have these problems (i.e. if you both worked for the same company and connected to the corporate VPN).
If this (atmittedly incomplete) explanation is all greek to you and makes you want to run for the hills, I apologize. The thing you want to do isn’t easy. If, on the other hand, you’re intrigued and want to tinker, I’d be happy to answer specific questions in more detail if I can.