Proper unit-testing roughly doubles the amount of time it takes me to write a "unit" of code. This is a high cost so I do not have 100% unit-test coverage.
Over time I have developed an intuition about whether I NEED a unit-test for a particular unit. When I think I need tests I write them.
Typically I'm correct about whether the units need tests but when I make a mistake (as evidenced by bugs in the code I didn't unit-test) I go back and write the tests.
This "middle way" works well for me.