My approach, using Blender, is to completely finish the modelling first. Then assign your material, and then unwrap. Doing it this way means that you can judge the space needed on your textures much better than doing it as you go along, IMO. Because I use baked Ambient Occlusion (AO) textures, this means that I need to find space on my texture for virtually every face on my model. However, some faces are either not prominent or invisible, so I scale these to take up the minimum space possible and allow more space to be devoted to the important bits. Example: in a cab it's important to be able to read the dials but it usually doesn't matter if the rear bulkhead is a bit fuzzy, so devote space on your textures accordingly. Give the dials loads of space, and the rear bulkhead a lot less. Baking AO gives a good basic shadow effect so IMO it's worth doing for just about everything. If an object is duplicated on the model, and has the same light/shade as the other one, then bake and then duplicate the object.
Good unwrapping and UV mapping is one of the most important aspects of 3D modelling, and it would be possible to write a book about how (and how not) to do it (I'm sure it's already been done, before the links come flooding in...)
R3