If you are making a change to the cell background directly in your code, what is probably happening on the device is that when you move to the next screen, the tableView on the previous screen is being unloaded to save memory, and when you go back to it, it is re-loaded and the cells are created again by calling your tableView:cellForRowAtIndexPath: for each cell.
This would also explain why it doesn't happen in the simulator, which is less memeory-constrained and so probably isn't unloading the view. Try simulating a memory warning in the simulator on the second page and then going back to the first view and see if your cell is de-highlighted like it is on the device.
To make the effect persist after the view is reloaded, you will need to remember the cell index that was highlighted before pushing the new view, and then re-highlight the correct cell in your tableView:cellForRowAtIndexPath: method when it is re-created.