This problem was such a headache. Actually the problem was caused by my ESET Smart Security. What I had to do was just to disable its Protocol Filtering. Yup, that's it, the solution to my 3-month headache.

Thanks to this forum
 
 
Some code that may help me in the near future.

<script>
function FixMenu() {
if (typeof(IsMenuFixed)!='undefined') return;
if (!window.Menu_HideItems) return;
window.OldMenu_HideItems=window.Menu_HideItems;
window.Menu_HideItems=function(items) {
try {
OldMenu_HideItems(items);
} catch(ex)
{
if (items && items.id) {
PopOut_Hide(items.id);
}
}
}
IsMenuFixed=true;
}
</script>


A script to be added in the code-behind:

ScriptManager.RegisterStartupScript(this, GetType(), "FixMenu", "FixMenu();", true);

The full explanation of the code can be found here:
http://siderite.blogspot.com/2007/04/using-menu-inside-updatepanel.html