$this_category = get_category($cat);
isso retorna a categoria do loop em questão, não do menu item em questão, por isso está bagunçando tudo..
além do mais, você está usando get_category_children que é uma função depreciada.
dê uma espiada em http://codex.wordpress.org/Template_Tags/wp_list_categories#Only_Show_Children_of_a_Category
Obrigada, Enapupe! =)
Eliminei o $this_category = get_category($cat); e continuou funcionando, mas sem a bagunça que fazia antes.
Eu olhei no Codex (e busquei em outros lugares tb) uma alternativa para o get_category_children mas não encontrei e não consegui entender como fazer para que o child_of deveria ser aplicado no código para me mostrar as subcategorias sob os itens pai.. =/ Então, mantive o get_category_children
Bom.. se resolveu o seu problema, menos mal!
O que você pode fazer é redeclarar esta função no functions do seu tema, pra não ‘perdê-la’ num possível update.