Well, it looks like you're doing something kind of screwy here.
It appears that, due to listText not being declared in the levelsBG function, it must be declared out at the class level, and you are overwriting a reference to that object in every iteration through your loop, so the only one that exists at the end, is the very last object created.
Then in your event handler, you are traversing up the display tree to the class in which that one reference lives, and tracing out the text of that one, so the appearance is that they are all the same.
If your intent is to trace the 'text' property of any given textfield that you've named listText, you will need to go about it a little differently. This snippet should work, but you might want to revisit your understanding of how class members work and can be addressed, as opposed to child DisplayObjects?
private function levelsBG():void {
for (var i:Number=0; i<myXML.children().length(); i++) {
listText=new TextField ;
listMC=new MovieClip ;
listText.text=myXML.MEMBER[i].@NAME;
listText.name = "listText";
listMC.buttonMode=true;
listMC.mouseChildren=false;
listMC.addChild(listText);
addChild(listMC);
listMC.addEventListener(MouseEvent.MOUSE_OVER,listOver);
}
}
private function listOver(e:MouseEvent):void {
trace(e.target.getChildByName("listText").text);
}
}