See Im not much of a computer wiz when it comes to ports so I have no idea what 'port-forwarding' is... Well... I told my firewall to have SC as an exception... but my protection expired... lol... and I really haven't tried it. I have a Linksys Wireless G 2.4 Ghz USB adaptor and a router hooked to my other computer that has a modem.
1. Buy a mace.
2. Use the mace on your router.
3. Reconnect internet without router.
4. Host whatever you want.
Seriously though, routers can cause that hosting problem. You can host a game for specific individuals by joining another game that they are in; once you've been in the same game with them, they will be able to join your game if you host it directly afterwards. You can use this method to transfer a map to a friend for hosting.
Back when I had dsl, I actually had the same problem, and I looked on the blizzard website.
I opened the ports they asked for, (Specifically ports 6112 and 6119, for TCP and UDP packets) but it still did that. I tried not using a router, but it still did that.
Went to blizz tech support and they emailed me some file that checks the status as I connect to bnet so I "know what's wrong"...
And everything came up fine, because the connection itself is perfect, just when i play games with more than 2 people it's unbearably laggy, or when I go to play a pub game, say I'm not the first person join, and there are already two people in the game, and I'm the third. Then my computer wouldn't dl the map...
I recommend you try looking around on the blizzard site, they may have some advice for you that would work (unlike what they did for me, though i respect DavidM.@useast for trying to help me)