Mi pare che l'innestamento dei blocchi sia errato (dal punto di vista logico e semantico).

Io userei:
codice:
...
  <li id="menu_3">voce3

    <span id="menu_3_sottomenu" class="sottoelemento" style="display:none">qualcosa</span>
  <li id="menu_4">voce4
Il
puo` anche non esserci (ma non so come vuoi che appaia).
Sicuramente il <div> dentro un[*] non ci sta bene (un blocco con display:block; dentro uno con display:qualcos'altro; potrebbe dare problemi).

In alternativa, sarebbe meglio:
codice:
...
  <li id="menu_3">voce3<ul id="menu_3_sottomenu" class="sottoelemento" style="display:none">[*]qualcosa...[/list]
  <li id="menu_4">voce4