Initially I did some tests using billboards, but for a large number of particles the aplication slowed down very quickly. So I wrote a custom scene node that can render a large number of particles very quickly (a jump of 25 to ~ 1200-1300 FPS).
There are a number of generators you can use: pickover, lorenz, polynomial etc. You can also generate random particles bounded in a cube, galaxies, and can also define your own custom equations for generation. If you don't want to use the 3D nebula, and only need a background, you can render te nebula to a texture and use it on a skyplane (one face of a skybox). The skyplane material is additive so you can also use a skybox in the same scene.
For coloring the particles 3 modes can be used: uniform color, which assigns the same color to all the particles, gradient color which assigns colors from a gradient based on the time of generation and range color which makes "clumps" of color. The last mode is very slow so be carefull with the number of particles.
To use the nebula and/or skyplane in your projects include the CNebula.h/.cpp and CSkyPlane.h files. An usage example is also included. In the example use the 1-8 keys to view 3D objects and shift + 1-8 to view renderings of those objects. In addition to the example source you can find a description of each function parameter here.
Download link: http://www.mediafire.com/?mzvecdphdu2
And some screenshots:
A so called "Lorenz butterfly" using the uniform color mode

Generated using a custom equation

A galaxy

The range based color mode

An interesting thing you can do with this objects is animate them. To do so modify at least one of the parameters by a very small value each frame/second, and call the generation function again. But try and use only the first two coloring modes for this.
If you want to find "interesting" looking objects you can use Chaoscope a free strange attractor viewer, at least for the functions that use strange attractors.