I think the only non-error way to do what you want is using SmartFolder(s) with condition and a code module (placed before SmartFolder with condition), which should check the test state and fill a TestCase parameter. This TC parameter would be then evaluated in SmartFolder condition.
Here is a mockup of test case structure:

Thanks for the reply. This is not what I want to do. It is during the execution, that I wait for a certian element to occur (this is the wait condition) and then either continue with the test case or start with a new iteration.
I am able to do this by throwing an error and starting the next iteration but I am looking for a way in which I do not have to introduce errors.

The solution I suggested does exactly what you have described. The only problem is, that it will work only if you know EXACT place, where you want to validate an element. And from the description of your problem I understood that you know the decision point? So instead of Validate, you can use Exists() method. If element exists, you can continue with TC, otherwise, it will not run the TC. True, the solution I described will require you to modify your test workflow.

If you are looking for a 'global' solution, running above the test itself (in a separate thread), and which will check every action/element used in every recording, then I'm afraid, you are probably out of luck?

You mean you simply added a condition (with return) in one of your TC recordings and it skipped next recording steps and all remaining recordings in actually running iteration (without throwing an exception) and then it started new iteration?

I do not use recording modules for my tests. I have a bunch of code modules that I use as individual testcases. I mean 1 module corresponds to 1 testcase. In this particular case, I use the return statement to loop out of the Run() method for that particular module iteratoion and start with the next one.

I see. In such particular case yes, Return is a solution. But If there would be two or more modules in one test case, it would not work, because instead of running next iteration, it would go to module2,3, etc...