I seem to get asked this question more when the year-end is approaching. This is an article I wrote a number of years back that I've refreshed and repurposed. It may or may not be the right time to move.
When considering whether now is the right time to leave your company, think through these three points and see where it leads you. Do not trigger a discussion with your management/employer unless you are confident your job is secure.
If you are worried that any discussion of your concerns with your management will risk your position, make sure you find a new role first. If your job is at risk, do not ‘talk it out’ with them.
Find a Solution Internally
Every company has issues and every person whether a manager, teammate or subordinate has problems as well. No company or person is perfect. However, some companies and people fit better than others. The best way to make things fit better is to communicate openly on your concerns and frustrations with your managers and if necessary HR and the next level of management.
If you are frustrated that you haven't been promoted or offered a higher salary, start by asking for a meeting with your boss and explaining your interest (not your frustration) and ask for their advice. 'I want to progress towards a GM position. After 4 years in the company, I may not be ready and I wanted to get your advice on what I need to do to make this happen.'
Note: when having these discussions, leave your frustrations outside and come to the meeting with an open mind and heart to listen and consider all the options mentioned. You may not have realized a very real barrier to your progression/salary adjustment that the meeting will highlight. If you are feeling angry or unhappy, reschedule the meeting or request another time when you are ready.
Request a Transfer and Escalate
When you have tried to solve your frustrations and not been able to resolve the issues at play, consider going to HR. HR and your higher management to discuss whether there is any way you can transfer to another department/team. You never know until you ask.
Make sure to make these discussions positive and open. Saying 'I feel like I can contribute more in XYZ team and would like to have the opportunity to prove myself.' is better than listing your frustrations with your present role/team.
If you have gone through the solving and the talking and are not getting the resolution that you want. You may have some form of resolution and want to see what other opportunities are on the market. Start by imagining the process of writing and tendering your resignation.
Imagine yourself standing in front of your boss, talking with him or her and explaining your choice to leave the company. If you can imagine this possibility and it doesn't make you too uncomfortable (a little discomfort is normal), you are likely ready to move. If you go through this process and feel like you are betraying your coworkers, clients or it just doesn’t seem like something you can go through with, go back to the first two steps.
By working through the solutions and the escalation process long enough, you will eventually find a solution.