What you are testing will determine how long it takes. For example, it takes me much longer to write a unit test for TSQL using the Database unit test framework from MS than it took to write the stored procedure, as it is a very manual process to prepare the test.
But, if I use Eclipse or VS2008 for Java or C# classes, and I just tell it to create the tests, then it is pretty quick to do the tests, as much of the grunt work is done for me.
It is always worth it though, as it helps to cut down on some likely bugs, but, more importantly, when it comes to duplicating a bug you will end up writing these tests anyway, and if you don't design your classes to be unit-testable then it will require refactoring, which can introduce new bugs, in order to fix a reported bug.
That is one important thing is that you will find that you have functions that are not testable, so you will end up refactoring just so you can do reasonable unit tests.
For example, if you have a function that selects from a database, then does business logic on the results, how do you properly test that? It should be two separate functions, with a controller that calls to fetch the data, then calls to do the business logic, so you will have three tests, but, the controller can go to a mock for the database as you have a separate test to test the database layer.