So, I scraped some data from the excellent www.footballwebpages.co.uk website and wrote an algorithm to project each team's final points tally...and, Norwich will win the league with 103 points!
[EDIT: This one is probably more likely (see thread below for reasoning):]
I had a look at the results and fixtures for the season and got the feeling that some teams must have played more of their hard games than others. Then I got thinking about what a 'hard' game actually is and realised that some teams tend to do better in different types of game, and not necessarily the ones you think. For example: Villa have not played any of the current top 8 at home; Leeds have won 2 out of 3 away games against top 8 teams, but drawn both the equivalent home games; conversely, Leeds have only won 1 out of 3 away games against bottom 8 sides.
Essentially the algorithm breaks the league down into groups of 8 teams: top, middle and bottom; and then works out the average number of points each team has gained so far against each group, both home and away. Then it looks at the number of remaining games each team has against each of these groups and allocates projected points accordingly. Finally, it looks at each team's current form compared to the season as a whole and adjusts the projected points to reflect this (assuming that current form will revert half way back towards the season form).
Without the adjustment for recent form, the projection shows Sheffield Utd winning the league on 99 points with Norwich 2nd on 96. I also ran the projection with a complete reversal of recent form and it had Norwich 5th on 84 points.
Obviously this is not perfect: some teams have little (or no) data from games in some of the categories, and it is highly unlikely that results will follow exactly the same pattern for the rest of the season. But it definitely gives some insight into how current trends could play out. I'll update it with fresh data at later points in the season and see how it changes over time.
I'd be happy to share the data and method in the (unlikely) event that anyone wanted to play around with it; it's just a long SQL query.