For contacts with no gifts ever, use Search Builder. Include contacts where >Contribution > Contribution ID > Is Null.
For contacts who didn't give within a specific timeframe, I can only come up with one front-end way. It's kludgy but may get the job done. Create a custom text field for contacts, let's call it "Special Use". Create a group that includes all contacts who gave before OR after the timeframe. Use Batch Update via Profile to edit all contacts in this group, setting the text of Special Use to "Exclude". Now use Search Builder to look for contacts where >Contact > Special Use > Is Empty (or Is Null). Not pretty at all, but no code required.
It would be nice if Search Builder had a NOT option, so we could exclude people who meet certain criteria. Or if we could use CiviMail's Include/Exclude group functionality to build our list and save the result as a new group without actually sending the email (like Raiser's Edge users do with the Quick Letters feature). Maybe one day!