After creating the new world you use 'getWorld' (which refers to the world that the actor is currently in -- the 'old' world). You need to refer to the new world to 'addObject' into it:
UpperWorld uw = new UpperWorld();
uw.addObject(this, getX(), uw.getHeight()-1);
Greenfoot.setWorld(uw);