Hi Dani,
We noticed the IE7 styling issue ourselves just before Christmas and a fix for that should be going out in the next release this week, but thanks for pointing it out anyway.
We've looked at this again, and really it does seem to come down to that 24-hour delay. The normal cronjob simply skips the program management completion checking for 24 hours after the last time it checked, so it wouldn't matter how often you run the cron within that 24 hour period, it'll still just ignore any subsequent program course, courseset etc completions. And as you noticed if you tell it to run the program completion check in every cron run then it works.
It is not ideal of course, and it is on the list of things to do, to refactor the code involved to remove performance bottlenecks on large sites. The only reason it does things with this 24-hour delay is because the current checks are very expensive in terms of database resources and really do cause performance problems for large live customers.
In the interim until we release a fix I'm afraid the only workaround is to set $dailycron to 0 in local/program/cron.php so that the program checks run all the time, though be aware of potential performance issues.
Sorry if this isn't of much help!
Thanks,
Ciaran