Es mejor usar empty(). isset() verifica solo la existencia de la variable, no su valor, justamente el problema. Viniendo de un formulario, es común sí se recoja el campo pero este se encuentre vacío.
empty() verifica tanto su existencia como su valor. Valores vacios, cadenas vacías, cero, null ...
www.php.net/empty