As you manually add the entity, the framework can't know the added entity is optional. I think the best thing you can do is this:
store the address entity or entities into a collection
upon save, check if these are filled in, if not, do:
addressEntity.Person = null;
this will remove addressEntity from Person.Address
Another way to solve this is by changing some details in your gui: the user has to click a button to ADD an address, and if the user does that, you call AddNew(). With that, the address becomes mandatory and the user therefore has to fill in the fields.
You can check whether an address is valid by adding an IEntityValidator implementation to it as the validator and simply call 'Validate()' on it.