I worked for below-market salary for a year and a half just so that I could get out of .NET development and start working on Python. Now after a year and half, armed with more Python experience, I have switched to another Python job at what I estimate to be at least market, if not above-market salary.
Bottomline, never say never. You may have to take a temporary hit so that you get to do what you want.
I did the exact same thing when I switched from .NET to Ruby. Took a one year hit to work with Ruby at an early stage startup and left after a year to join a Fortune 100 making more than I ever did in .NET.
Not clear about what you are saying - what situation? I had a choice - keep working on .NET or take another job at a below market salary to work on Python. So I did the latter because I loved Python. This was with the goal that I would gain enough experience in Python to jump ship and work in a Python-based environment, back at market-salary.
Bottomline, never say never. You may have to take a temporary hit so that you get to do what you want.