- Interactivity within the course (games, simulations, questions and feedback, etc.).
- Variations in learning styles and the time people dedicate to reading the content, and possibly reading content repeatedly.
- Audience familiarity with e-learning and/or computers. Time may be required just to learning how to use the technology and becoming comfortable with it.
- Complexity of content. The more complex the longer it may take to digest the content.
- ESL (English as a second language) as a factor among the audience.
Now I know a seasoned e-learning designer can get a "pretty good" idea of how long it will take to complete a course, especially if they know their audience well. But if you want to be confident in your estimated completion time, and I think we owe it to our audience to give them a reliable estimate of the time they will be investing in a course, then you must time the course during a beta test. You will get varying times among your participants, but you will be taking the average time to estimate the completion time. FYI: If you beta test the course on an LMS, which you should, the exact times will be recorded for you. Your beta testers must be a diverse selection from the course’s target audience. Plus, any changes to the course as a result of the beta test must be accounted for in the final estimated completion time, if needed.
If you do not have the luxury of implementing a thorough beta test of your course, then minimally get a number of diverse people to complete the entire course even if done remotely and not observed in a testing lab. Capture their completion times and in the end give your audience a realistic estimate of the time required to complete the course.