DSL is managed by a system in the phone company office (central office or CO) called a DSLAM (Digital Subscriber Line Access Multiplexer). The DSLAM can be managed by the ILEC (phone company) or a CLEC (a company that rents lines wholesale from the phone company and resells, such as Covad).
The DSLAM is a system that is built of shelves mounted in a networking bay. Each shelf has a number of cards in it and each card has a number of ports. Each port corresponds with a user that is connected to it. The shelves are all interconnected and fed from the primary shelf by what is called a trunk. The trunk is the maximum alloted bandwidth that the DSLAM can manage at once (usually a DS3, 45 mbps, or an OC3, 155 mbps).
When a new connection is set up on a port, it is provisioned for a certain speed, in your case, 512 kbps. The DSLAM then limits the speed over that port to the provisioned speed. At this point, the DSLAM has nothing to do with IP addressing, so your IP has nothing to do with your provisioned speed or how it limits the speed.
The DSLAM passes the data on through the trunk to the BRAS (Broadband Remote Access Server) which is where such things as account policy (monthly transfer limits etc) are typically applied. This is the first stage in the link since your router where the signal is actual IP and not PPP or multiplexed. From here on the traffic gets switched and routed through multiple different networks and devices to reach your destination.
The speed of the connection between your computer and the destination system (say a website) is the speed of the slowest link in the chain. This is usually the speed of the broadband connection, but in some scenarios it may be a slower connection somewhere along the chain (say the website is running on a server that is connected to the internet at slower speed than your DSL).
The data is sent in the form of packets (small chunks of data) and at each link in the chain these are buffered before being sent on. Only a certain number of packets can be buffered at once, so a send-acknowledge-send method is often used. A packet, or group of packets, are sent, then the sender waits for acknowledgement from the receiver that they have been received, then more packets are sent. This way the lowest speed link in the chain never gets completely saturated.