Aside from your LCD driver, I've written an Interface/Classes to manage a menu system. The display class has methods that draw menus when you feed it a list of menu items. In my case, I pass the list of menu items names from the collection of device settings to the draw menu method. Overall, I use an interrupt driven state machine as the general code pattern for the system.
What do you have so far? What are you requirements? What device are you using?