I wrote an Inventory system - and It was not easy...
And yes I think the only way is with panels (and a DLL I agree) - although you can create panels dynamically during the game. It is possible to do, it just takes time and some planning on how you are going to do it before hand.