When I get stuck on a song, and can't seem to make progress, I leave it, and work on another one.
I used to think this was a bad thing; a clear sign of an amateur songwriter, if not a personality defect. Surely a real songwriter wouldn't give up when they hit a block; a real songwriter would stay with it, overcome the obstacles, and finish the song. Last fall I got frustrated by the fact that I had so many songs in an half-finished state, that I told myself, "You cannot start any new songs until you finish some of these." I figured that would motivate me to get them done. It didn't help. It just made me feel worse about myself, or at least about my songwriter self.
I wrote Denver songwriter John Common about this, asking for tips on how to speed up the process of finishing songs. He replied, "The only trick I've learned is to simultaneously be working on 15 songs ALL THE TIME. That way, when one dead ends, you've got 14 others waiting for attention." Good advice.
At the Rocky Mountain Song School, someone asked songwriter Darrell Scott essentially the same question. Darrell said (I'm paraphrasing him), "Be patient. It will come when it's ready. Don't beat yourself up about it."
Work on 15 songs all the time. Don't beat yourself up. Be patient. Those are my songwriting mantras now.
Disclaimer: I know some people like to work on one song, and one song only, until it's done. If that works for you, cool! Do whatever works.