http://bandwidthcontroller.com/index.html
Seems to do what you want, but ive not read up on it. Will need to be diverted via a dedicated box i assume. (you can limit a user by % but not sure if its dynamic, reading on)
Is there a limit on what you want to spend? Cos most things appear to be expensive to do what you want. Home or business?