While unit testing is useful, you should definitely have a system test plan for every release - this should include testing the normal use-cases of your application (for regression) AND the specific feature being worked on in more depth.
Automated system testing is pretty much vital to avoid regressions - unit tests can all pass and your app will still be a crock of dung.
But if you can't do automated system testing for all of your use-cases (most applications have complex use cases, particularly where interacting with 3rd party systems and user interfaces), then you can run manual system testing.
User interfaces create the main problems - most other things can be automated relatively easily. There are heaps of tools to auto-test user interfaces, but they are notoriously brittle, i.e. in every release the auto-tests need to be tweaked just to pass (assuming no new bugs).