Gauge their interest
For guerrilla or in-person interviews, I schedule 30 to 60 minutes per user. That range represents the anticipated level of interest. IOW, if the product/feature is something the user will be very interested in contributing to, I'll block out 60 mins. For most things, any more than 30 will scare subjects away.
Limit the scope
That time is based purely on attention span. For that reason, it's important to test a limited set of features. I find that this works out to one normal workflow/path or the evaluation of one view and it's actions. Cramming too much into the session will result in rushed, unreliable information.
If you plan to do any internal testing, double that time factor. Internal resources tend to have a lot to say. You will often end up having something of a therapy session. I consider this a service to the company ;-)
Don't forget recap time
On the back-end, you should allow yourself 2-3x that time to evaluate and create a recap for other team members. Each one may not take that long, but you'll also want to create some kind of matrix to reveal patterns.