Ваша концепция сама по себе неверна.
Вы можете обновить панель следующим образом:
public void refreshPanel(JPanel panel){
panel.removeAll();
panel.invalidate();
panel.validate();
}
Проблема:
Я вижу в вашем коде, что вы пытаетесь создать более одного объекта на одной панели, который вам нужно обновить.
Было бы лучше создать один объект панели и обновить этот объект.
ImagePanel panel = new ImagePanel(backgroundImage);
Надеюсь, вы понимаете, что я хотел вам объяснить.
Если вы все еще в замешательстве, дайте мне знать.