Well, Admittedly I've never played around with it myself, and the concept is likely easier then the execution.
when the gateway machine initially leases an IP Address to the client and sends a DNS server, that DNS Server must be initially configured to return the same IP Address to that client regardless of what DNS lookup is preformed.
So if the user initially connects open's their web browser and goes to
www.google.ca your DNS server must send your IP Address of your apache box back.
You apache needs to be configured to return the same web page regardless of what domain name header is sent to apache.
Then your apache page needs a link/button, that when clicked, resets the DNS to proper lookup functionality for the client.
You could probably do this with a wildcard in your DNS entry that is added/removed as needed and I would imagine there is software out there that already does this.
It would take some time playing around with, and it the end would probably be cheaper just to by a router that already does this for you