Although DKnight cites good research in his answer, another thing to consider would be the performance requirements of the system. Are the users doing some kind of time-sensitive work or for some reason need quick requirements? If you can somehow ask the users what response times they would like to see, especially in terms of minimally acceptable times, that would be best. Performing usability testing with observation would also be good for overall usability, and if you see a user getting frustration with waiting after performing a specific action, then you know to revisit the performance of that portion of the system.
In terms of generalities, though, I would suspect that 10 seconds is indeed a long time. There are some long-running operations, and if this is indeed the case, it is important to provide cues to the user that the system is still working and to continue waiting.