First drop downs boxes and list boxes do not use the null string value when empty. Or I should say you cannot create a null string entry in a drop down box or list box through the user interface. These 2 fields along with the check box and radio buttons have a non-null value even when not completed. Since these 4 form fields will not trigger an error condition when a submit button is activated.
Leaving a field that has the required property set to true will not trigger any error since exiting a field is different from clicking a submit button.
You can always write a custom script that validates all the form fields before a "submit" action can be performed.