You can use any prior that you want. It does not have to be normal, it can have different mean, or it can have no mean (Cauchy)... It is your subjective choice that you make before seeing the data.
Recall that posterior is likelihood times prior
$$ \underbrace{P(\theta|D)}_\text{posterior} \propto \underbrace{P(D|\theta)}_\text{likelihood} \times \underbrace{P(\theta)}_\text{prior} $$
As mentioned by others, prior shows you initial, out-of-data, beliefs about your model and then is updated using observed data. So you can set mean of your prior to zero and if observed data provides enough information so to move it to another value, posterior would be different than zero. This idea is actually often used for purpose, for example Spiegelhalter (2004) describes as different priors may help to test different hypothesis against the data and facilitate decision-making, where zero-mean prior could be used as "sceptical" prior.
As a picture is (sometimes) worth a thousand words, you can check and run yourself one of the examples in JavaScript library bayes.js for MCMC sampling. The example illustrates simple model for estimating $\mu$ and $\sigma$ for normal distribution (i.e. intercept-only regression if you prefer to think of it like this), where model is defined as follows:
$$ x_i \sim \mathrm{Normal}(\mu, \sigma) $$
$$ \mu \sim \mathrm{Normal}(0, 100) $$
$$ \sigma \sim \mathrm{Uniform}(0, 100) $$
You can run the example to convince yourself that not much MCMC iterations are needed for algorithm to converge and for posterior mean to update from prior zero to something around $185$. Prior mean is not what we want posterior mean to be, but what do we think of our model before seeing the data and in many cases before seeing the data you do not know if regression parameters have any effect, i.e. if they are different than zero, so often it is a reasonable choice.
Spiegelhalter, D. J. (2004). Incorporating Bayesian ideas into health-care evaluation. Statistical Science, 156-174.