You don't mention your OS or iCal versions but, based on my own OSX.6.8 and iCal v4.0.4 (1395.7) then go to ...
iCal > Preferences > Advanced
... and look at the Option for Delete events n days after they have passed and ensure that either the option is not checked (which should keep past events for ever) or set to the number of days after which you are happy that past events get deleted.
Other parameters can also be set for the treatment of To Do items within that same preference panel.
I guess, although I do not know, that other versions of iCal and Calendar have similar options somewhere within user customisation.