There’s some other factors too, I am a network engineer, and your speeds on wireless are actually what you should be getting (except for the shoddy upload of course).
To the super technically inclined: I am going to way over simply things to not scare the people who don’t completely understand this technology.
Wireless is a shared medium, with half duplex transmissions (both ends can’t talk at the same time) so although it says 54mbps (for 802.11g adapters), it’s really limited to 27mbps, because you have to send a reply for each packet. Add in multiple stations talking, and transmission errors (which are reasonably common on wireless, especially if you live in a crowded building) and you get about 16mbps total throughput, you’re getting less, but that’s not too far from the expected range.
In addition, Linux based routers like your linksys router are notorious for this one, they need to be rebooted fairly regularly, like once a day. I typically schedule them to reboot early in the morning when I’m asleep.
Make sure you get the Docsis 3 modem, that’s probably going to be a requirement as we move toward a IPv6 world.
Also, all Docsis networks have a bandwidth pooling problem, that is, you have a shared total bandwidth allocation for a block or two (but up to 8 or so) of homes. Depending on where you live and how many people nearby are comcast subscribers, you might be getting low bandwidth not because of your hardware faults, but because you are trying to get online while everyone else is. I face this problem during the school year, I live near a few colleges, so when the apartments next to my house are full of idiot college kids downloading all manner of things all day, my connection suffers. There’s not much you can do about this.
Also don’t forget that if you have multiple devices, bandwidth is shared among your devices too, etc. Although I don’t think you’re having that problem, but it’s worth mentioning just in case.
Edit: Also, I doubt this is happening because you have a pretty recent router, but older routers simply can not handle much above 20, or 25mbps throughput. We were having this problem on a lazy as hell instant public wireless setup we did. We eventually had to break down and buy a big boy router (Cisco ASA) to handle the increased traffic loads and bandwidth of hundreds of morons trying to update their Facebook status at once.