
for a PC, you've got multiple problems to overcome. Firstly, is the initial swap. Handling it off camera and "forcing it" is obviously the easiest. As somebody said though, it does reduce player freedom. I'd consider this tactic for a player who missed a session (as its great time to make it happen, wasn't at the game) and he was going to be NPC-tized anyway.
Handling it in a private 1 on 1 session is "more gamist" but it is fair. Its also puts at risk because the player actively knows, and may be MORE resistant since getting swapped means his PC failed/died.
Once the swap is done, you've got the issue of player knowledge and portrayal of his PC. One method, the player never knows, and all the "evil" gets done off camera. I used this method for a player who I needed to portray a NPC posing as a PC. I needed the NPC to do somethings off camera (long term stuff), and having the player use him made him seem more "innocent". The player had agreed to this, as his real PC was in a forked campaign anyway. By not having the player portray the NPC side of things, his secret actions never came up during the game as "he's up to something, lets not trust him". I don't actually recommend this method as a primary solution.
The obvious method is to hand a player a note saying he's a doppelganger. I'd actually consider lying to the player and saying he's "possessed". This way, the player thinks his PC is still OK.
In any event, if the player knows, you need some leverage to make sure he doesn't give it away or play poorly. Consider giving an XP award or penalty for this or the next PC when the current problem is solved if the player does it well. Also, rather than killing the real PC, have the PC in statis/hostage somewhere. The Doppelganger is keeping him alive for future consultation. You can then tell the player that his PC's fate depends on how well he plays the doppelganger. If he does badly, the PC was killed during the swap. If he does well, the PC is a hostage and can be saved.
ncG1vNJzZmivp6x7prrWqKmlnF6kv6h706GpnpmUqHypu9Zmm6hlqaTCbr7Up2SaZZSkvbG4xKCYp5%2BVp3tzg5FscG9n