Here's another setup that uses feedback "offscreen" rendering.
There are two different rendering feedback loops, the bottom one renders particles as white circles + a bit of feedback trails. I then use that image to compute slope, and feed it back into a GLSL particle system.
Each particle looks a couple of steps ahead, and uses that slope texture to move out from the other particles. As a result you get a particle system where each particle tries it's best to avoid other particles.
Hope that explanation will help you to understand what is going on. As usual, GLSL dat is filled with comments.
Hope you'll find it usefull!