Turn on Usage and Health data collection. This is your first step. This will get you data on which pages users access. This will all be stored in the Usage Database. The Usage database is the ONLY database microsoft will support you modifying for your use. Once logging is enabled you can run custom queries or reports from the Usage data base to get the different aggregates for users (the default reports to do this for all users).
You can also get this from inside SharePoint if you enabling auditing across your site collections. You will then get some excel reports showing which users accessed which items and you can again customize for grouping as you need. These are more difficult to work with as you have to go to each site to get them. Even scripting it is a bit tedious.
As far as time on each page - there is nothing that tracks that. You need to add that functionality your self as well as a method for storing it. It is supported to log this type of activity to the Usage database so you can report on it. How you would implement that I'm not sure. You could use a custom HTTP handler to monitor requests between pages and log the time difference or possibly track it via a client side cookie.