Matchwinner Ibrahim Osman had a night of mixed emotions as Birmingham climbed into the top 10 with a 2-1 win over Preston at St. Andrew's.