How to loop the particle simulation indefinitely?
A more "clean" way to create a loop using particles:

let's say the render range is 300

Create ParticleSystem


Start: -150 End: 150 Life: 300
Remove randomness
Newtonian physics type
object, force etc..


Create ParticleSystem 2 (same object)


new data block based on ParticleSystem (everything same as the first system)
Start: 150 End: 450 Life: 300


Change numbers according to render range and remove a frame from the beginning or end of the range.

Happy Blendering :)

Heres a demo:
https://www.dropbox.com/s/ipp86jqzoeiqn04/SeamlesParticleLoop.blend?dl=1