IF statement not falling over to ELSE with Options Framework

You’re forcing of_get_option to return a value in all cases, by setting the 2nd argument, which is the default value to return in the case the option doesn’t exist. If you want it to evaluate to false in the case where there is no value, remove the 2nd argument:

if (of_get_option('page_background')){