Cisco routers can do this using the traffic shaping function. This only works with newer IOS' and there are some restrictions on the line type being traffic shaped. e.g. you cannot traffic shape a dial up line. However, you could do something like this:
LAN <--> Cisco E0 | Cisco E1 <--> DSL/Cable Modem
|