I think that you've answered your own question somewhat. The only suggestion I have is to learn to pick your battles, and learn to be patient. Inject a few ideas every now and then, then let those ideas percolate until you get "buy in" from others in your team.

The main problem isn't about who is right or wrong. It all comes down to both individual and group psychology. People tend to wrongly feel a sense of inferiority when their values and ideals are challenged, and people can be very resistant to change. They can become argumentative and will seek others to validate their position and be comforted as a group so that they do not have to challenge their own values, and so that they do not have to face changes that might make them feel that they had certain concepts wrong. On the flip-side, software developers in particular can be very sensitive people, and yet can often be insensitive (particularly when younger) in terms of how they might approach challenging the values of others. The result is that you will often find teams where one individual is very unhappy and feels that everyone else seems to refuse to understand, and treats that individual like the proverbial tall poppy. Often this results in a group culture that is poisonous to all, where blame and defensiveness become the norm.

You also need to consider your own position in all of this. It isn't likely that the blame for a poisonous culture lies entirely with your colleagues, even if it may have started there. It is more likely that their reactions to you and your reactions to them all feeds back on itself over time, and left unchecked becomes a very difficult to manage problem. A good manager spots these sorts of problems early and fixes them, but the reality is that most managers in IT come from IT backgrounds first, and are promoted without the additional training needed to actually manage people effectively, so that by the time they realize there is a problem, it has grown very large, and has become a part of the team culture.

So what can you do about this?

One option is to simply leave, but to do so in a way that allows you to leave with your reputation intact, and with a good referral from your employer. You don't want to have your "Jerry McGuire" moment and burn all your bridges, and at your interviews you'll need to be careful about how you phrase your reasons for leaving, and to avoid coming across as arrogant or bitter at how you felt you were treated.

If you wish to stay, then you'll need to do the hardest thing of all. Swallow your pride, and over time show others that from their perspective you have "changed". You need to stop and listen to the others, and to avoid the temptation to take rejected ideas personally. Time, patience, and learning not to invest yourself too emotionally in the work that you are doing. Even more importantly, you need to learn how to phrase things so that you are showing others that you are sensitive to their point of view, while still getting your own across.

Your question echoes some of the experiences that I have had over the last 10 or so years, and while I'm not a psychologist, I am a keen observer of how people interact with each other, and I have myself needed to work at changing myself before I could effect cultural change in my team. In some cases I have changed jobs, and in others, I have stayed and done everything I could to really make a difference to my workplace. I've walked away with the greatest satisfaction from those places where I overcame being the tall poppy, and left an improved work culture and with great references. See this as opportunity to really rise to a challenge. It can be hard, but very rewarding in the end.