The steps may be very system/router dependent. But here is the general approach I used:
Using your router configuration page, forward port 80 to your machine's IP address.
Register for a service like DynDNS so that you have a static text <-> dynamic IP mapping (you can use john.dyndns.org or something that will always point to your dynamic IP)
Use some sort of client that will keep the dyndns servers updated about your dynamically changing IP address. Many routers themselves come with a feature to do this for standard services like dyndns. But if you don't have one, you can download a client from their website.
Now, whenever you use your dyndns URL that you choose when registering (john.dyndns.org or something), from anywhere, the request will be seent to your dynamic IP which is kept track by dyndns and then after reaching your firefall/router, will be forwarded to your machine, where your XAMPP can process it. If all goes well, you can get the whole thing working in an hour max.
Once you have all things setup, if you simply try out your domain name or your dyndns URL from any system within your LAN, you will only get to see your router page. For it to work properly, you should try to access your web server from OUTSIDE your LAN. So do that, or use a proxy. I forgot the reason for this :|
Also, if you need to access the XAMPP from within the LAN, simply get the LAN IP of the XAMPP system and use it from within your LAN.