Clayton Donaldson put Blues in front when he tapped in after Anders Lindegaard saved Diego Fabbrini's shot.
Birmingham doubled their lead through Donaldson's close-range finish after David Cotterill's shot was saved.
Alan Browne fired home Tom Clarke's cross to give North End hope before Greg Cunningham fired in an equaliser.
Birmingham, who had lost all their three previous games at St Andrew's 2-1, remain in ninth place - but now cannot reach the play-offs.
Preston North End stay a place below Blues in 10th as they recorded their 16th draw in the Championship this season.
Birmingham City manager Gary Rowett told BBC WM:
Media playback is not supported on this device
"I have told the players that the last 15 minutes was one of the weakest I've seen in a game.
"It probably sums up our season since March. We need to be tougher, more professional and more disciplined.
"We can have a shake-up because, if that is the level of performance that people are happy with as a top-10 side, I am certainly not happy.
"I will make sure that I will not have players in the team who are happy with that kind of performance."
Preston manager Simon Grayson:
"We showed fantastic character to get back in the game and it was the right result when you see the number of saves Tomasz Kuszczak had to make and the times we hit the post.
"We want to maintain where we are in the league and not drop out of the top-10 position where we are at present.
"We are now looking to a good home game against Burnley when I hope that we can get all three points."
Birmingham City ended their three-game losing run at home in the Championship, but let a 2-0 lead slip as Preston North End battled back to earn a point.