I'm assuming this is a web application?
Basically, you nailed it with object recognition. When TestComplete needs to find an object and click on it, sometimes the object may not be available right away so it delays. I'm assuming there are no errors in your project which means TestComplete eventually finds the object but it's that "find" time that sucks up your run time.
Something to take a look at is whether or not you have "extended find" turned on in some of your mapped objects. IF an object is not found right away, sometimes "extended find" can trigger longer runs as this triggers a scan of the full object tree.
My suggestion:
1) Rework your test to include some better "wait" code to wait for components to load before you proceed with the test. While this may slow your "fast" runs down a little bit, it WILL make your code more consistent in timing by building in checks. If you think about it, as a human, you respond to small triggers and stimuli as you're working with an application that indicate that it's "ready" for you to interact. You should code automations likewise
2) Rework your name mapping to remove extended find where it's not necessary or useful. It has it's purpose in some web applications with a lot of <DIV> elements but it can slow things down.