$_POST[ value ] が null でない場合にのみ、テーブル Users を更新しようとしています。null の場合は、列に既にある値をそのままにしておく必要があります。
$query = "UPDATE `Users`
SET FirstName = COALESCE(:firstName, FirstName), LastName = ISNULL(:lastName, LastName), City = :city, State = :state WHERE Email = :email";
$stmt = $dbh->prepare($query);
$stmt->bindValue(':firstName', $firstName);
$stmt->bindValue(':lastName', $lastName);
$stmt->bindValue(':city', $city);
$stmt->bindValue(':state', $state);
$stmt->bindValue(':email', $email);
$stmt->execute();
列 FirstName には COALESCE を、LastName には ISNULL を試しました。COALESCE は、自分の値を空白 (NULL) に置き換えます。これは、達成したいこととは正反対であり、ISNULL は機能していないようです。