The problem with automatically UV mapping is that it either is, or is close to, a hard AI problem. Doing UV Mapping well requires elements of creativity and understanding of the ultimate aim of the process. The computer is capable of unintelligently folding out polies, but that doesn't help you, the person who has to deal with it, create a decent looking model, because the UV will be geometrically perfect, but entirely non-optimised. How doea the computer know which polies need to be connected seamlessly, and which need to be off in their own island for the purpose of creating hard edges? How does it know which pieces can be overlapped, and which need to be unique? Boring though it may be, UV mapping requires thought and creativity that a program can't sensibly provide.
There are, however, some things that can make the process less awful. The key, in my opinion, is to stop treating modelling, UV Mapping and texturing as three different processes. Definitely don't farm any of these steps out unless absolutely necessary. Each part, to a greater or lesser extent, is made easier if it can be done in concert with the other two.
For example, when I model a ship or station, I'll often make the greebles separate subobjects for the purposes of making the destroyable. One other advantage is that you can take that submodel, align it so that the majority of the detail is on the X, Y or Z planes, then export it for UVing separately to the other parts of the ship. UVing is immensely easier when you're on nice neat angles like that. This same mechanism is also useful if you want a lot of repeated detail - make it once, UV it, then duplicate the UVed model.
Droid also pointed out the value of modelling to UV. Symmetry is one good way to do this, but there are lots of tricks around clean geometry, regular angles (doesn't have to be 90 or 45, but just something you can remember for future use) and other things.
One specific trick I use is to make shapes in as simple to UV a format as possible. For example, when I want a run station, I build the ring as a tube (with all the elevation changes, ditches and ridges etc.), then UV the tube, then bend it 360 degrees into a circle. Immensely easier to UV map and much cleaner/less distorted to boot.
The connection goes the other way too. While you're UV mapping, you're often likely to spot errors you didn't notice during texturing (zero width faces are common). Being able to go back and fix these is very valuable. You may also run across geometry that's particularly tricky to UV. If so, you have the option to go back and rebuild it in a friendlier manner.
Finally (and this is a big one), UVing and texturing should go hand in glove. Yes, you need to have a UV map before you start texturing. But that's a long way from the end of UVing. You will, without fail, find aspects of your UV that are wrong while you're texturing. Some polies will be too small, others warped, some will be overlapping, or a seam will be in a bad place - there are hundreds of little changes that you should be making during the texturing process, which is why it's (IMO) critical to be able to do both. I honestly think that it you can't UV, you can't texture.
A few specific tips:
Get a proper UV program. This may be specific to Max, but I find that while the inbuilt tools are fine for basic stuff, they won't be good enough for complex meshes, and they certainly aren't as efficient as a dedicated piece of software. I sprang for Ultimate Unwrap since I'd spent years with Lithunwrap, and it was money very well spent. There are likely other good ones out there too.
Don't be afraid to move polies and verts around manually. When I have a circle modelled that I'm happy to be radially symmetrical, I'll often break it into tris and manually line up the outer edges. This let's me draw straight lines on the map, as opposed to circles, which never look as clean.
Use checker maps. These let you make sure, at a glance, that all of your faces have roughly the same mapping density, and that your vertex manipulation hasn't warped any polies.
Use auto smoothing to separate complex bits of geometry, then select by smoothgroup to break them up for UVing. This can give sharp breaks with clean lines in amongst complex bits of geometry, where selecting individual polies might be very difficult or tedious. The grow and shrink selection tools are also useful here.
UV greebles completely and separately before attempting to combine them. This might make for a slightly less efficient map, but it will keep relevant polies geometrically close to one another, as they will have been already arranged efficiently and close to one another.