The basic object color you use here is not really a good way to give your objects the look you are after. It's more a way to visiually seperate different objects from each other in the viewport.
To really define the surface look of your objects, you have to make use of materials. This supports multiple colors (and more of course) on one combined mesh ( thats what you create by attaching the parts).
Every polygon in your mesh has an ID ( a simple number ) attached to it called a Material ID. You can see this value in the edit mesh modifier when a polygon is selected. Once you set up your mesh to have different material ID's on the different parts ( eg. "1" for the head polies, "2" for the arms etc.. ) you are ready to assign a material to the whole mesh ( look up material editor in the docs ).
To have the material make use of the different Material IDs on your mesh, you have to create a material of type "Multi/Subobject". Which - as the name implies - simply is a container for multiple sub materials. Each of those sub materials again has a number ( an ID ) attached to it, which than corresponds to the material ID on your mesh's polys. This way you can give each of polygon on your mesh a specific look/material, if you that's waht you want ...
Josef WienerroitherSoftware Developer & 3d Artist Hybrid