BitTorrent is generally claimed to distribute bandwidth so that users download at a speed proportional to the speed they upload. However, this is not enforced by the protocol (as far as I can see), so if a user configures their client to upload slower, they still compete for bandwidth with other users in the network on equal terms; the upload-download relationship is only true for the whole network.
This could be fixed by having clients exchange facts about what rate their peer-to-peer connections are receiving at through the tracker; however, to prevent a malicious client (or group of clients) from subverting the bandwidth allocation process by reporting incorrect facts about other clients, each client should also report the rates that it's sending at. The tracker can then compare the reported speeds for each peer-to-peer link and, if the clients speeds agree, report to other peers that trust exists between the two.
This can be made resistant to attacks from groups of clients working together because these clients must also establish peer connections with clients outside the group; if the tracker prefers to give out peer addresses for peers which are trusted (or trusted by trusted peers, and so on), then any group of clients that are lying about their speeds will end up isolated and only connected to each other -- to find out about other peers, you must establish trust between yourself and them.
This is definitely one of my sketchier ideas; it might make an interesting research project for someone.