check out Nocat Auth at
http://nocat.net
it allows a user to collect an IP via DHCP,
then when the user opens a browser to the web, they are redirected
to a splash page (which can be encrypted) where they enter a
username password combo.. if authenticated, the firewall ruleset
will be adjusted to allow that mac address through.
i use it on my public wireless access points, and
it works great. also it's easy to install and configure.