The problem is that your router (a home or SoHo one I presume) will not port forward on the internal interface.
What is happening goes along these lines:
- PC on your LAN does a DNS lookup for your website and gets your Router's public IP address
- Web browser sends its requests on port 80 to your public IP address
- Your router gets the request on its internal interface and since it has no port forwarding capability on this interface it either sends it to its own web site or just drops it rather than forwarding it to your webserver.
To get around it you will have to use the local IP address of your webserver - you should put this in your Hosts file so that you can still access it using its URL rather than IP address to allow virtual hosts to work.
For example add the line www.mygreatwebsite.com 192.168.1.10
to your hosts file (naturally inserting your actual details) and use www.mygre... rather than the IP address so that when your browser's HTTP request hits Apache it gets the URL so virtual hosts can work.