I recently switched my Linksys WRT54G router from the original firmware to Tomato.
Linksys routers use a version of Linux. Because Linux is open source, interested people can modify the code and make improvements. Various people have done various versions of replacement software with different features. One version is Tomato, and it has other sub-versions with less mainstream options. Also being Linux, this is free. I'm using the base version.
The install process could not be much simpler--Basically the same as updating the router firmware with the official updates, except with the Tomato file instead of the file from Linksys. The router will pull the file in, then reboot. Your internet connection drops for about 10 seconds. then comes back up using Tomato, preserving all the settings you had before--same SSID, same security settings. The admin password is the same, but you now have to use the "admin" or "root" account instead of leaving the user blank. The most difficult part is making sure you use the proper file for your particular version of router--there is a chart to verify by serial number. There is a small risk of a failed upgrade leaving your router in a state that is unusable--In theory there is a method to set up TFTP on one of your computers to push working firmware if this happens. I would rather not have to test that, but I had the instructions handy beforehand.
Tomato solved a problem I had with my Ipod Touch, where it could connect to the network but not the Internet. At home (and only at home) I had to give it a static DNS (which required static IP) and put it in the DMZ--directly on the Internet rather than firewalled. It worked without modification everywhere else. Now it works properly at home with no workarounds.
It also lets me used "fixed DHCP", which is the main reason I installed it. This lets the router manage IP addresses, but also lets you tell the router to give particular computers the same address every time. Setting up a fixed DHCP IP for a computer that is on the network is simple--find it in the Having stable IP addresses makes a lot of network based stuff easier to do. On my computer, the "save" button was not initially visible, I had to scroll down to find it.
There are a lot of other features that look promising, but I haven't tried yet--QOS to control and prioritize bandwidth use of various applications, (don't let Bitttorent take ALL the bandwidth, for instance) and the ability to run scripts at set times. Timed automatic reboot option--I now have it set to reboot at 4am every morning--I am hoping this prevents the need for rebooting when the router has been on for a long time. You can adjust transmit power from the pre-set of 42mw up to 251 (I would be cautious about extreme increases, there is a potential for overheating and permanent damage) You can block certain combinations of computer and Internet application at certain times--this would be good for some control of kids useage. You can limit wireless connections to pre-defined devices.
I haven't used this long enough to know if it is stable--If it is at least equal to the Linksys firmware, I am impressed.