You could use the access logs, but it would be somewhat complicated.
1. You would need to resolve the session id in the log against the user. So you would need to make sure that you were able to persist the contents of CMN_SESSIONS after a session was destroyed.
2. You would need to decide how you define "accessed". Does the user have to click on the filter button of a portlet for it to count as accessed? Or just navigate to a page containing the portlet for it to count as accessed? In some cases, it would make sense for you to count the latter as an access, but others, not. In the case of the former, I'm not even sure that you can distinguish a "Filter" click for a specific portlet.
3. For any sort of non-trivial implementation, you will have a ton of data to parse.