An ADSL modem connects to a DSLAM (Digital Subscriber Line Access Multiplexer) in a central office over your phone line and "handshakes" with it in a manner somewhat akin to that of a dialup modem in that when making the connection, it sends various connection speed requests back and forth until they can agree (for lack of a better term) on what will work for the equipment at both ends. When the speed is agreed upon, the modem "syncs" in that it is ready to send and receive at the same connection rate as the DSLAM.
The rate that it connects at is determined by two things:
(a) the rate that it is set at by the company that owns the DSLAM (in our case Bell, on behalf of the ISP in question)
(b) any line problems that might affect speed (they cause resistance and can hinder communication -- think of it as static on a line when trying to talk to someone; if it is clear, your call goes faster than if it is noisy and you lose bits of the conversation).
As distance is a problem with ADSL (the longer the loop, the greater the resistance in transmitting date), the farther you are from a DSLAM, the lower your maximum rate of communication. This is why some people can get higher speeds than others (or at least, higher estimated speeds).
We are in the midst of an upgrade, but we'll leave that aside for a moment. Right now, there are three speeds of ADSL available: DSL Basic (128k), HSE (2500k or 2.5M) and HSE Ultra (4000k or 4M). Depending on which one you have, they modem will try to connect at the appropriate speed for your service. However, if there are problems, the modem may "jump down" to the next sync rate to try and stabilize your connection instead of having it try to connect at a speed which it cannot manage. This is why the service is marketed at 'up to' rather than guaranteed speed.
Explanation courtesy of Kardinal