You say that your cable connection can upload at 10Mbps, and if that's true then the asymmetry of the connection can't be to blame for getting what sounds like a 256Kbps upload speed. However, I assume you've actually tested this, as opposed to just assuming it - many ISPs won't give those sorts of upload speeds, even on the high-end cable packages. If you've actually seen real upload speeds to read sites of 10Mbps, then that rules out one option.
The same goes for your DSL link - I'm assuming you've seen real download speeds of 300KB/s. Never assume your ISP's advertised speeds are correct without real-world testing, they can't guarantee the quality of DSL lines (and some of them just plain lie through their teeth).
That said, Comcast is infamous of being one of the worst ISPs for traffic shaping and blocking - they use Sandvine network monitoring equipment to prevent BitTorrent seeding, for example. They always used to deny this, but it's fairly conclusively been demonstrated that they do.
So, it's possible that Comcast are also doing something nasty to incoming connections on port 80, in an attempt to stop people running high traffic websites on their home connections. Some ISPs just plain block it, but it sounds like perhaps they're just throttling. I would suggest reconfiguring Apache to listen on an alternate high-numbered port - something unassociated with any existing service, like 4477. If you want to test this, you need to put the port number after the domain name, separated with a colon.
If that still runs slowly, you could try making it a HTTPS connection on a random port, but SSL is a bit of a pain to set up in Apache if you haven't done it before.