At one side of my house, I've got a Linksys/Cisco e3000, that doubles as my router. On the other side is a second e3000 that is a switch at my projector for the second htpc, 360 and ps3. I run stock firmware on both, but all they handle is firewall (on the router), AP, and nothing else. I have a home server running 2008R2 that handles all my DHCP and DNS. There's a gigabit switch at my main TV, and a second at my desk for the desktop, server, and optionally a laptop. I've got Gigabit speeds across the house, and my wifi never dips below 144mbits anywhere in the house.
IPTV is connected to the ISP's router, which has my primary e3000 as it's DMZ. I have to leave this in place as it's a coaxial (EoC) hub for the IPTV boxes (Telus Optik TV for the curious). I could run my STBs over cat5e instead of the RG59, but my house only has one coax and one cat5e per TV, so either I'd have to start messing with QoS contentions, or just suck it up and run a second router.
I've use DD-WRT on my WRT54G's in the past. I found it to be fairly stable, but I still had to reboot the routers about once a month. I tried out Tomato and found it to be MUCH better (6-month uptimes). It stuck with my WRT54G's until I upgraded them to the e3000's. In the transition to a WiFi-N network, I picked up a couple cheapo D-Link DIR-615 routers (20$ on boxing day deals a couple [few?] years ago). Hated them. Pieces of ---steaming pile of meadow muffin---.
... Long story short... I loathe ISP default equipment. Linksys routers on stock have been absolutely great, provided you disable most of the daemons. I've got 99.9% (200+ days) uptime and that's due to a mandatory firmware update from the ISP for their POS router.