Right now I am faking it by filling a mesh's volume with particles and dissolving it twice with different turbulence setting, then flipping the animation of one to join the two clips together. It's a huge hassle and it would be great if I could do it all in a single pass, I just don’t know if it's possible or how.
Start by creating multiple particle systems, one for the starting position with the particles dispersed, a second one filling the shape that you want, then a third exploding them outwards. Then you setup another with physics set to keyed, in the keys list you add an entry for each system you have setup previously in the order you want them run.
When played the particles will move from position to position of each particle system.
Here is a quick example file that may help.