Use a foreign transaction fee free credit card from Nationwide or Abbey (now Santander). Most cards charge around 1.5-2% per transaction, but the specific cards from these two don't (the Abbey one is the Zero card, which is what I have).
I travel abroad a lot, and get exchange rates on the card pretty close to the interbank rate. Way better than the rates on currency.
One more tip, if a hotel (or whatever) asks you whether you want to pay in the local currency or pounds, it's generally better to pay in local currency, assuming you have a fee free card. Otherwise, you're at the mercy of the exchange rate of the hotel's bank.
For currency, I either use the card in a cash machine abroad (and pay the cash interest – still cheapest), or use the recommended sources on Money Saving Expert (generally Post Office).
Paul