What about using something like kickstarter to raise money?
I think you're right that it's a model that would work well - if I could raise the money to code it I'd happily make it open source after that (running costs means it'd have to cost something to use on someone's server).