I think the approach I outlined in I Meant To Do That would work here. Don't tell anyone anything; let them play their characters exactly as they would in any other circumstance. However, any time the player of the co-opted character makes a suggestion or takes an action not suggested by other party members, roll a d6, adjusting the roll for the intelligence of the controlling magic-user or spirit, or of the monster impersonating the PC: on 5+, the player's actions were really part of the villain's plans. For example, if the player says "I think we should go this direction," on a 5+ the villain knows this is the location of an ambush arranged by its allies
Improvise appropriate details whenever the roll is a success so that bad stuff tends to happen. Add new monsters or traps, for example. If there is a trap, include the intelligence modifier on the roll to avoid the trap; the villain might still get caught (or pretend to get caught) in a trap, but has an advantage of knowledge. In fact, if you normally let players make their own saves against traps (as I do,) you can tell a player of a co-opted PC who failed the roll by a small amount "... but for some reason you were able to escape." Let the players fret over why that character was special. Doppelganger? Or was the PC blessed by a cleric?