i wondered why the button text wasn’t showing when i was disabling the background images in firebug and then noticed the text-indent:-9999px, thats a good trick i’ve never thought of doing that.
I noticed that by placing the background images on the li tags your then using the :hover pseudo class on them to change the image. I think you could just put the background images on the anchor tags instead. It’s ok to have block elements inside block elements so using the anchor tags to apply the backgrounds and displaying them block is fine. This way your image rollover effects will also work in ie6 which doesnt support the :hover pseudo selector on anything except the anchor tag