There's a fair difference here...
I thought there were two things upon which the speed of your connection hinged.
Firstly is the speed of the link between yourself and the exchange. The best "real-world" indicator of this is the line attenuation (which is often shown in your ADSL router's status page, if you've already a connection) - lower means better.
Secondly, is further up the rung - as has already been stated, many ISPs oversell the bandwidth; they assume that not everyone will be on at the same time - this is the contention ratio, often around 50:1. So they might put, say, 50 customers who've all been advised "up to 8 meg" onto a single 8mbit connection to the internet. If the ISP can't afford enough bandwidth, then things will start to slow down horribly at peak times.
The first issue is troublesome - BT are the only people likely to care, and so long as you can get around 0.4mbit (i think...) out of your line, they won't do a thing. Only possible solutions here are to move closer to an exchange (yeah, right..) or install a new line in the hope that you get a newer bit of wire! The ISP isn't able to do a thing, besides connect your wire to the equipment in the exchange and hope - no amount of shouting will make them change a thing really, nor will "I pay £20 a month i should at least get 20meg" - for ADSL, that's just not going to happen.
The second, the bandwidth issue, is however where the ISP has a shout. They've got to find the ideal trade-off between speed and cost. To give every user the full (for example) truly unlimited, 8mbit connection would cost much much more than the £24.99 a month that the "unlimited*" plans give. A very good website to check, incidentally, is:
http://www.kitz.co.uk/adsl/caps.htm