D7 - field_update_instance requiring manual refresh after node save to view new values
the theme function occurs towards the end of the page request lifecyle in the theme layer of a drupal request.

Whereas, the field_update_instance call is updating the database values for this Node's promotion image. The node is already loaded and being used as variables within in the theme at this time. When you refresh the page you're requesting the Node from the database again -- which is "refreshing" the data.