You don't write loops in SQL very often. Normally, you try to do things in a single statement. In this case, this could be:
UPDATE OwnerTable
SET FirstName = isnull(O.FirstName, C.FirstName),
LastName = isnull(O.LastName, C.LastName),
CellPhone = isnull(O.CellPhone, C.CellPhone),
Email = isnull(O.Email, C.Email)
FROM OwnerTable O
JOIN Contacttable C ON O.Adderss = C.Address
AND O.City = C.City
AND O.State = C.State
AND O.Zip = C.Zip
WHERE O.FirstName IS NULL OR
O.Lastname IS NULL OR
O.CellPhone IS NULL OR
O.Email IS NULL
I've written the query so that if some columns already have values, they are retained.