I think by far the single biggest roadblock is users - until you've built the majority of a working system, you're highly unlikely to have any users. Without users, you don't have feature requests, bug reports, and consequently there's limited motivation. However, even if you do build a working OS, there's no guarantee you'll get a user base unless you can find a hook that draws people in - what sets your OS apart enough for people to be willing to try beta versions, hang in there when there's hardly any working applications ported to it, etc.
You might be interested in checking out SkyOS - it was developed largely by a single developer (now a small development team). The Wikipedia article has a good summary as well. I think it's a good example of how such a daunting task can be undertaken and turn out pretty well. They've done some interesting things with SkyOS, and it's especially cool to see that come in large part from the efforts of a single person in their spare time.