Unit test is very useful for big refactoring job. They are so many changes that you can never expect which part of your change will create a bug.
unit test give the application a firm foundation and control the possibilities of producing new bug.
It is also very useful for quickly developement. For a web application, you compiled it inot a war/ear file, deployed it, run the application in debug mode. The developement cycle is so big that it will inevitably delay the progress. With unit test, you can quickly debug without a servlet container.
Hibernate project has 43000 lines of coe along with 12000 lines of unit test code.
There are several different kinds of unit tests.