You can bypass the need for a lock (or atomic operations) via the normal machinery of Parallel LINQ:
var avgX = Particles.AsParallel().Average(p => p.X);
var avgY = Particles.AsParallel().Average(p => p.Y);
Particles.AsParallel().ForAll(p => { p.X -= avgX; p.Y -= avgY });
Since summing the numbers is an O(N) operation, I would be extremely surprised if this part took any significant portion of time.