How do I find out who sold my address details to whom?
There are two possible ways to find out who an individual junk mail / list broker has sold your details to; by asking them informally or by sending them a subject access request.
Contacting a sender informally might not work as the sender wouldn't have to comply with your request. I suspect most senders would either ignore your request or tell you they can't give you the details.
The formal way is to send individual companies a subject access request. Such requests are made under the Data Protection Act 1998 and require companies to let you know what information they hold about you. Unfortunately, companies may charge up to £10 for providing you with the information. As your request would be fairly straightforward they really shouldn't charge but my guess as that some companies will do so anyway, if only because they don't like it when people submit requests for information.
As an aside, registering with the Mailing Preference Service should prevent that companies that buy your data use it to send you unsolicited mail. Even if the buyer is not a member of the Direct Marketing Association they should check to see if any of the people on their second-hand mailing list are registered with the opt-out scheme. I very much doubt all companies that buy mailing lists comply with this rule, but registering with the Mailing Preference Service can help prevent that your details are sold from one list broker to the next.