It's known to happen. The online services are a cloud service that's often called IWNet. As far as I know they are spread over multiple countries to optimize network latencies. These services operate on port 3074, but there is no need to forward it! As pointed out before, forwarding is only for incoming connections and this connection is outgoing.
In my research on the MW3 protocols I have noticed that the game client is sending a lot of information to these services. They seem to include data like custom classes, ranks and leaderboards, making them necessary to launch the game.
One of the things that might cause this is that you may have a firewall on your computer and accidentally blocked access. Try disabling the firewalls. If you have the default Windows Firewall I recommend against disabling it — try allowing MW3 access again.
If it's not the firewall there's obviously something else blocking outgoing connections. Many universities and other educational places (or maybe even at work?) block unknown ports, and 3074 is probably one of them. Try asking your system administrator to allow games.
Another thing that could possibly go wrong is the so-called DNS. The game has to be able to resolve the primary game servers, mw3-pc-auth.prod.demonware.net, mw3-pc-lobby.prod.demonware.net, mw3-stun.us.demonware.net and mw3-stun.eu.demonware.net.
If these domain names are successfully resolved, the game will want to connect to the auth server (TCP port 3074, yet again no need to forward). This is a very short conversation that only takes a few milliseconds. Once this is done it will connect to pw3-pc-lobby.prod.demonware.net where it seems to download your rank information and classes.
The game will then want to retrieve your public IP address. It will do this by sending yet another packet to a server which will reply with your external IP address. This is needed for online gaming. The game will then ask the server for the next server's address. Once your computer has an answer to this it will continue to the main menu.
To summarize: make sure you're not behind any kind of firewall and ensure that your connection can handle it.
The above isn't actually a solution, it's a description of what happens. I'm still working with some people to resolve this issue. Someone has mentioned that the issue can be resolved by changing "r_multiGpu" from 1 to 0 in config_mp.cfg, but this was probably just a random person saying something random. Do tell me if it works though.
If you found this useful, THANK me! COMMENTS are always appriciated.