I agree conditional wait is the way to go. You could try this -
try {
selenium.open("URL here");
} catch (Exception e) {
for (int i=0; i<60;i++) {
if(! selenium.isElementPresent("elementlocator") {
Thread.Sleep(1000);
} else {
break;
}
}
}
This script would wait for at most one minute (as limit is set to 60 in for loop) and if your page is loaded before that (that is when "if" condition is specified) then control would come out of loop and continue execution of rest of the tests.
About setTimeOut method, by default open method wait for only 30 sec for page to load and if you want to increase the wait period then you should use setTimeOut after open method. I had never got setTimeOut working and can not say if it works now as I don't use Selenium RC any more. Hence I used to use solution I described above.
~ seleniumtests.com