Runtime platform switching isn't supported really, the whole system isn't designed for that.
Regarding the issue in WinPhone8, if you can detect when the device is going to be lost / reset, then find all tk2dSpriteCollectionDatas, and call ResetPlatformData on them. When it recovers, run through all sprites and call ForceBuild() on them, that should force a reload. It looks like Unity isn't behaving itself and isn't restoring the textures on that platform.