Recently - once again - I faced a very annoying problem: after migrating a Joomla site from Joomla 1.5 to Joomla 1.7 - and later to Joomla 2.5 - time-to-time the menu ordering switched back to the essentially wrong ordering resulted from migration process. First time I thought I am doing something wrong, and when my client cried about, I reordered a menu again and again. I have to fight with this problem too many times until I found the source of error and an easy fix.
Long story short: we all know, that Jupgrade essentially fucks up the menu ordering. The menu items resulted from upgrade are there - but are all over the place, so essentially one of first tweaks you should do after you used JUpgrade is to re-arrange your menus. But the problem is deeper, the process inserts some values in the "ordering" column in the "_menu" table. This column essentially is unused by the new Joomla core, the menu ordering is controlled by the values in the "lft" and "rgt" columns, so to not wreak havoc in your site again and again, you simply need to fill the content of "ordering" column with zeros.
Presuming, that your Joomla database table prefix is "prefix", (adjust to match your settings!!) you need to run this simple MySQL command in phpMyadmin:
UPDATE `prefix_menu` SET `ordering` = '0'
Now you can set the menu ordering as you need it - and the new order will stay!
Be aware, that this is qualifying as a core hack, perform it on your own risk - do a backup before. A misplaced comma or a similar typo can ruin your site.