I dont know is it already here but i found interesting addon/plugin for blender.
autoPack is an open-source general packing algorithm
autoPack packs 3D objects onto surfaces, into volumes, and around volumes with:
•zero to minimal overlaps depending on the method used •accuracy vs speed parameters selected by the user •zero edge effects •complete control, from fully random to fully ordered distributions •agent-based interaction, weighting, and collision control
Blender instalation process:
http://autofill.scripps.edu/install/blender-installation
It is open-source. So may it be possible to integrate it into blender particles? For my lack of knowledge - no idea…