Q:

Why do we have to normalize the input for an artificial neural network? 

It is a principal question, regarding the theory of neural networks:
Why do we have to normalize the input for a neural network? 
I understand that sometimes, when for example the input values are non-numerical a certain transformation must be performed, but when we have a numerical input?  Why the numbers must be in a certain interval? 
What will happen if the data is not normalized? 

A:

It's explained well here. 

If the input variables are combined linearly, as in an MLP [multilayer perceptron], then it is
  rarely strictly necessary to standardize the inputs, at least in theory.  The
  reason is that any rescaling of an input vector can be effectively undone by
  changing the corresponding weights and biases, leaving you with the exact
  same outputs as you had before.  However, there are a variety of practical
  reasons why standardizing the inputs can make training faster and reduce the
  chances of getting stuck in local optima.  Also, weight decay and Bayesian
  estimation can be done more conveniently with standardized inputs.  

A:

In neural networks, it is good idea not just to normalize data but also to scale them.  This is intended for faster approaching to global minima at error surface.  See the following pictures:

Pictures are taken from the coursera course about neural networks.  Author of the course is Geoffrey Hinton.  

A:

Some inputs to NN might not have a 'naturally defined' range of values.  For example, the average value might be slowly, but continuously increasing over time (for example a number of records in the database).  
In such case feeding this raw value into your network will not work very well.  You will teach your network on values from lower part of range, while the actual inputs will be from the higher part of this range (and quite possibly above range, that the network has learned to work with).  
You should normalize this value.  You could for example tell the network by how much the value has changed since the previous input.  This increment usually can be defined with high probability in a specific range, which makes it a good input for network.