Okay, so there's no show/hiding going on - that expectation was confusing me

The problem is the height setting for each of those links. So (to use the kitchens one as an example):
Change:
#productmenu #kitchen {
height: 51px;
}
To:
#productmenu #kitchen {
height: auto !important;
height: 51px;
min-height: 51px;
}
That'll fix the positioning and show your second level where it needs to be.
You'll then have to fix an issue with the backgrounds repeating:
This:
#productmenu #kitchen span {
background: url(left_kit.gif);
}
Needs to be:
#productmenu #kitchen span {
background-image: url(left_kit.gif);
}
As that background setting is overriding the earlier generic setting for #productmenu li a span (you can't break a background down like that and still call all parts of it back ground, one incomplete setting will just override an earlier one).
You'll then have to reposition the background image:
This:
#productmenu li a span {
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
background: no-repeat center;
}
Will need to be:
#productmenu li a span {
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
background: no-repeat center top;
}
After that, there may need to be a bit of fine tuning on spacing to get the top link of the second level nav to not be covered by the image.