You can achieve this by very simple way OOTB in SharePoint List using some Querystring hacks in list,
You have to fill values below for the list where you want this:
SiteURL,ListName,FieldName,FieldValue,FilterOp1 which suites your logic
http://[YourSiteURL]/Lists/[ListName]/AllItems.aspx?FilterField1=[FieldName]&FilterValue1=[FieldValue]&FilterOp1=[Contains/Eq/Neq]
As per your query, it will be something like below:
http://[YourSiteURL]/Lists/[ListName]/AllItems.aspx?FilterField1=Status&FilterValue1=Done&FilterOp1=Neq
By making this URL you will get your status column will be filtered with the status column and it will show only data which are not 'done'.
And the user can also remove that filter by clicking on that filter image in the column and all data will be displayed there.
This will solve your both the requirements!
Hope this will help you.
for more details visit this