Find contacts who haven't donated
Create a group of your donors, and then run a Custom Search of Include/Exclude.

One option is to create a group (preferably a smart group) using "Advanced Search" or "Find Contributions": the only search condition is a Contribution Status of Completed.  This will put all of your donors into a group (if you use a smart group, the group will continually be updated).

Then use a Custom Search that comes with CiviCRM - Include/Exclude.  Do a search that EXCLUDES the group of donors you just created.  You now have your constituents who have not yet donated.

Additional: From that Excludes custom search, you could then create another smart group -- this time, it would be a smart group of those people who haven't donated.