Any flavor of UNIX will do the job you need. There are also add-on solutions for Windows to provide Network Address Translation (NAT).
I would, however, reccommend against using any of the Windows solutions as the NAT software is only as secure as the host environment. As another poster pointed out, some some flavors of UNIX are more secure than others. If, however, we assume that you do not have any services on your internal network which NEED to be visible from the Internet, then all you need to do is shut down ALL ports. This will, generally, provide all the security you need.
Your NAT server should be wired into your network between your DSL router and your internal network. Assuming you don't have any internal routing needs, your config might look something like this:
DSL -->[NAT] --> Office Switch
In a simple configuration, like this one, you don't even need a lot of hardware to do the job. I run a fairly high-traffic (Symmetric 768k DSL at ~70% load on average) office with a Pentium 120 w/128MB RAM and a pair of Intel EtherExpress Pro 100+ NICs. FreeBSD runs the show nicely. Given that I already had the hardware and the OS, which includes the NAT server software, is free, net layout was about 4 hours of my time (clean OS install) for a grand total of ~$120. That's it.