As a consultant, I frequently leave jobs. I also help many people decide whether or not to leave their jobs. I have learned there is no one "right" reason for leaving, but I've accumulated a list of many "good" reasons for leaving. I'll give some examples:
In my career, I have left jobs when
- the job I was hired to do was finished.
- the job I was hired to do could not be finished.
- the job I was hired to do would be finished just fine without me.
- I was not able to do the job I was hired to do.
- the job I was hired to do wasn't worth doing.
- I was no longer learning new things (that's my most frequent reason for leaving)
- they told me that my pay was going to be "temporarily" delayed
- they asked me to do something illegal or unethical
You may notice that I never leave just because someone is going to pay me more money. If I was hired on to do a job, I feel committed to see that the job is finished, or going to be finished, or will never be finished. Only when my commitment is fulfilled am I ready to move on to bigger things. I don't think it's a good idea to leave behind me a trail of broken commitments.
Another good reason for leaving is not one I've experienced yet, but it's when they ask you to do something dangerous to your life or health. Very few jobs are worth dying for.
And here's a useful principle when leaving: If possible, don't quit until you have the next job set up. Why? Because it's much easier to get a new job when you already have a job. Employers tend to be suspicious of unemployed people.