Yes, under certain conditions, the Windows Azure Fabric Controller will re-image your cloud service role instances from your uploaded package. As you've noticed, any per-VM configuration changes you make should be considered temporary. This is part of the deal in the "stateless" model for cloud services.
When does your VM get refreshed? As you've mentioned, one of these would be during a server migration - moving an instance from one VM to another. In this case, the VM is built fresh from the deployment of record, with no effort to replicate the state of the running VM that is being migrated. Usually, goal state is to have all of the same type of role instance to be identical.
Why might you be migrated from one machine to another? One reason is hardware failure on the old machine. There's also an optional PaaS feature that all cloud service operation systems are patched regularly (think "patch Tuesday") then rebooted, though typically this does NOT require re-imaging. Certain operations you initiate (like if you decide to change the VM size) would also include re-imaging.
Here is some related info from one of the Windows Azure architects: http://blogs.technet.com/b/markrussinovich/archive/2012/08/22/3515679.aspx