Thats not how I did it. But I think I'm ready to disclose my method.
Step 1: Create the mesh you'd like to have 'built of lego'
Step 2: Add a subsurf modifier with 5-6 levels. (more is better, even for low res lego builds. you can also use regular subdivide if you don't want to smooth the mesh)
Step 3: Go to view settings. Change the grid spacing to something like .05. I used .01 for the really high res one.
Step 4: Select your mesh, go into edit mode, select all verticies, and use Shift+S to snap all of them to the grid. (This creates an ugly mesh, but dont worry about that right now)
Step 5: REMOVE DOUBLES!!! YOU WILL HAVE LOTS AND THEY JUST SLOW THINGS DOWN!! (press w, remove doubles in edit mode)
Step 6: (Optional) Select entire mesh in edit mode and delete only the faces and edges, leaving just the verticies.
Method 1 - Dupliverts
Step 7: Create a cube and make it the child of your mesh.
Step 8: Enable dupliverts, and scale your cube down to the number you scaled your grid to. Sometimes you have to scale it to half this number, I think because the cube is actually 2 units big?
Method 2 - Particles (needed for random colors!)
Step 7: Create a particle system for your mesh, set it to emit 'group'. An option should appear underneath it called 'pick random'. Enable this.
Step 8: Create a cube for your particle, and duplicate it a few times, giving each a different material. Add them all to a group.
Step 9: Set this as the group in for your emitter, and scale your cube to the right size.
Step 10: You will have to look at the number of verticies in your mesh, and use that as the number of particles to emit. (sucks because particles are limited to 100,000)
And there you go! Post any endeavours or problems you had, and I'll do my best to solve 'em.
Studio XPS 9100 | 2.8 Ghz Intel 930 | 12 GB RAM | Radeon 5870 1GB