On Englere's suggestion I eventually ended up looking up how to use the tracing aspects of ASP.Net, I must say that I hadn't realised how much info it gave. Incidentally if anyone has any good links describing the ins and outs of ASP.Net tracing let me know.
Anyhow through using the tracing I narrowed down the problem to be related to this:
So with the web.config modified to that shown below the code now works fine in a medium trust hosting environment, the important addition being >> requirePermission="false" <<.
<section name="theBeerHouse" requirePermission="false" type="MB.TheBeerHouse.TheBeerHouseSection, __code"/>
Thanks for all your help
p.s. MythicalMe: I've added the book you suggested to my wish list