Not an easy question.
1. You can't let people click 5 years' worth of days. That will take ages.
Off the top of my head, a nice way to lower the amount of clicking:
Perface the date picker with some thing like this
download bmml source – Wireframes created with Balsamiq Mockups
This will at least ensure the user doesn't have to click every single day, but will know for sure what will happen with unclicked days.
3. You can try and experiment with fancy drag-box selections and the like. I'm not sure how successfully not-so-computer-savvy people interact with them. Can someone reference some knowledge about this?
4. If the user knows his availability 5 years in the future, I'm guessing it will be pretty regular. Something like
Available on weekends, some weekdays, never on Tuesday.
Consider this backup scheduler from Symantec and its advanced calender manipulations:
(This is of course geared towards more experienced users, but it might be something to think about)
5. Lastly, when you let users make selection across multiple screens (meaning, not all selected entities are always visible) I like having a list totaling the selection.
Imagine your really setting up availability for 5 years. If you mis-clicked some day in 2016, by the time you get to 2020 it's 10 minutes later and it's completely out of view. You have no way of knowing you made that mistake and no chance to correct it. An informative list like this will help.
This can be as informative as needed. Anywhere between just summing the number of available\unavailable days (may be too plain for this application) to redundantly listing every selection made. (6.12.15 - Available, 7.12.15, Available...). Something in the middle is probably best here.