You need to add a break statement to stop the rest of the form from going.
Revised:
} -on_submit {
if {[lsearch {2 4 5} $organization_type] ne -1 && $states eq ""} {
template::form::set_error "area" "states" "Required"
break
}
}