I agree with most of what you have to say - I think most people who use unit-tests realize that you can't use them instead of having a well-understood QA process. Also, it's my understanding that unit tests are quite good at prevents previously found bugs from showing up again. When a defect is reported, _if possible?, you write a test for it and then it's added to the regression cycle.
I suspect a lot of people shudder when they hear the idea of programmers writing tests. But one of the benefits has to be that as a programmer, you really have to think about what you're doing before you do it. What is this one thing supposed to do. Before unit testing was popular, we required our developers to write function 'tombstones' (documentation about the name, who wrote it when, what it does, valid results, etc. etc.) before writing the code so that one would consider the atomic parts necessary. It helped.