There is no doubt that setting up Subsonic isn't the easiest project you'll undertake, but once you succeed, I think you'll agree it's worth the effort. Considering all the different platforms and Network gear that this is being installed on, it's no wonder that it takes a bit of research to get it right.
Here are the guidelines I've been working on to help others. Please feel free to comment and/or add/edit or make any suggestions that you think would help others.
First read:
http://monroeworld.com/android/subsonic/
Never use port 80 - ISP's often use it or block it. 8080,8081, work fine.
In Subsonic Settings/Network - UNCHECK " Automatically configure your router to allow incoming connections to Subsonic (using UPnP or NAT-PMP port forwarding)." make sure to hit the SAVE button, you may have to scroll down to see it depending on your screen size.
Manually assign a fixed intenal IP and static route to your server at the upper end of the address range of the router, out of the way of DHCP, e.g. 192.168.1.254
Set up your router manually. uPNP might work, but most often it doesn't. Learing how to do it will be a skill you'll love having as your network grows.
Check the Subsonic Control Panel to make sure it's using the right port you're going to use. I typically use 8080, 8081, etc.
Set up port forwarding in your router to direct traffic on the selected port to your server.
Learn your external IP address assigned by your ISP.
Test your setup by entering your external IP:port# to see if it connects. e.g.
http://24.88.76.61:4040/
If it works, you're good to go.