We've had a VMWareTasks thread on this.
Maybe it's a bug in VixCOM: RevertToSnapshot will fail with "file already in use" on VMWare workstation (both 6.x and 7.x) when you pass VIX_VMPOWEROP_NORMAL and try to revert a Live (powered on) snapshot. I think VIX_VMPOWEROP_NORMAL is meant to figure out what kind of power-on state to bring the snapshot to, so looks like a bug to me.
There's a workaround to use any other flag, both VIX_VMPOWEROP_LAUNCH_GUI and VIX_VMPOWEROP_SUPPRESS_SNAPSHOT_POWERON produce expected results - but it's not always possible to know upfront what state your snapshot is in.