A lot of people have problems joining or hosting games on Xbox Live and it's usually because they have a router. Routers need to be configured to forward the correct ports to the computers and devices connected to them to allow full connections.
Not configuring your NAT to be "open" can lead to lag, hosting problems, failed connections, and getting disconnected from games.
Click through for details on how to get the most out of your Xbox Live connection.
NAT stands for Network Address Translation, which is fancy talk for the way a router passes along external traffic to the computers on the local network.
Every service on the internet uses a "port" and these ports must be forwarded correctly based on the service. Xbox Live uses the following ports:
All three of these need to be setup to forward both TCP and UDP traffic to your Xbox's local IP address (probably something like 192.168.1.103, depending on your router).
Click here for an in-depth guide on how to forward these ports on Linksys and D-Link routers. The guide will show you how to setup a static local IP address for your Xbox so it stays the same and then how to forward the ports.
This probably won't solve all your problems on Live because it also depends on other people having open NATs as well, but it will let you connect to more people and should reduce lag.
PortForward.com has additional resources for instructions on almost every router ever.