The #Error occurs when the name of a field or control - [Town] in this case - either does not exist, or is already in use, or if the name of a function is unrecognised.
Check that the unbound control does not have the same name - Town - as you are trying to feed into its control source expression. Check also that the field you have named - Town - exists in the query or table you are using as the recordsource of your form. If it does not you will certainly get an error when you try to refer to it!
If this is OK then check what happens if you remove the Nz function - so just leaving
=Left([Town], 1)
I have come across some occasions when Nz is not recognised as valid. If this does occur, replace the expression with:
=IIF([IsNull([Town]), "", Left([Town], 1))
-Stewart