A few things you might want to try.
1) Make sure the webserver is running as root. Port 80 is a priviledged port and you cannot bind to it running as a normal user.
2) Dump the output of "ipchains -L" - is port 80 listed there? If so that could be the problem. For iptables there should be a corresponding command. I have a strong suspicision the problem lies here. There will probably be something that allows you to flush the tables temporarily. Try that.
3) Worse case scenario. Have a look at the output of a packet sniffer such as tcpdump.
Regards,
Hafeez