Recommendation: Tomato is best for moderately advanced users. Working with Tomato is on a par with dealing with DD-WRT, in terms of making sure you have the right hardware and following the flashing instructions to the letter. Tomato isn't used as a commercial pre-load, though, so don't expect to see it in an off-the-shelf router à la DD-WRT.
OpenWRTOpenWRT is a router firmware project that's like a full-blown Linux distribution for embedded systems. You can download the packages for a specific hardware configuration and build the code for that hardware using a supplied tool chain. This complicates the deployment process, but also provides enormous flexibility.
To save time, various prebuilt versions of OpenWRT are available for common hardware types and router platforms. This includes everything from generic x86-based systems to the Broadcom and Atheros chip sets used to power many open-firmware routers. The makers of OpenWRT recommend starting with an off-the-shelf version, then learning how to roll your own once you've found your footing.
Supported hardware: Lots. More than 50 hardware platforms and 10 CPU architectures are supported: everything from ARM mini-boards to full-blown x86-64 systems. They also have a buyer's guide for helping you choose proper hardware for your particular needs, in the event you're shopping for something specifically OpenWRT-compatible.
Features: In addition to broad hardware and platform support, OpenWRT includes support for the OLSR mesh networking protocol, which allows you to create mobile ad hoc networks out of multiple OpenWRT devices. Also, the software, once deployed, can be modified without reflashing the firmware. Packages can be added or removed as needed through a built-in package management system.