Not possible, to my knowledge, unless you poll to find out the status. This example was already brought up in a previous question on SO: How can I detect when the Windows 7 start menu opens
Theoretically you could write something that lives on a different thread that queries the start menu at given intervals. Then, if the start menu was detected as open you could trigger the code you want done. Just a thought...