As far as I am aware (which may not be far), the only ways to guarantee that the script runs is either by using cron, or by visiting the page yourself.
I did a rather cheap and dirty workaround for this on a site that did not have access to cron, it is not ideal though as would only really work on a reasonably busy site. In my example I wanted a script to run roughly every 2 hours.
I created a table called "run log" which had a single field containing the date/time of the last time the script was run. Each page of the site contained a quick check to see whether there was more than 2 hours difference between the last logged time and the current time. If there wasn't then nothing happened. If more than two hours had passed then the routine was run and a new log entry made.
It worked OK in this instance as the time did not have to be too accurate, and the site was busy enough to ensure that it was rarely more than a minute or two out. Can't imagine that it is either a very efficient solution or one suitable for many uses though.