In addition to Paul's note - Each of the tests in your code must have an ELSE block in them to indicate what to do if the fields ARE Null (blank). The visible / invisible properties of the form controls are not reset when you move to another record; the code has to do that. So, using this and Paul's suggestion, your first test might look like this:
Code:
If Len(Me.Ingredient1 & vbNullString) > 0 Then
Me.Ingredient1.Visible = True
Me.Ing1Qty.Visible = True
Else
Me.Ingredient1.Visible = False
Me.Ing1Qty.Visible = False
End If