Get procmon (from sysinternals), fire it up when you get the postgres problem, make a note of the postgres process ID (PID) from windows task manager, filter the procmon to this PID, scroll down to the bottom and look for any folders/registry keys this PID is trying to access.
The path and result columns in procmon should give you the clue as to the offending item...
If it turns out to be the path of a completely different app, this is the culprit that's holding the lock that's preventing postgres from starting - that app needs to be disabled, uninstalled or updated so it does not conflict with the postgres service.
susan