Check to see if you are checking for the variable inside of a TMPL_LOOP. By default, variables are localized, and variables from an outer scope will not be included in your current scope (see global_vars)
TMPL_IF does not check for existance, it checks for perl's definition of true.