Well, the first thing I would do, when looking at a long web form, is question why it was long in the first place. Do you really NEED to ask all the questions that you are presenting? Is there anyway you can remove several of the questions to simplify and streamline the form? Having designed several forms to apply for bank accounts, I know you often just HAVE to ask certain questions (because of regulations and/or policies), but it’s always worth questioning and trying to refactor.
The number one thing is to always keep in mind the obvious point – a web form is NOT a paper form. Users have a lot more patience filling out a paper form than an on-line form, even if the goal of the application is exactly the same. I’ve done A/B user testing with paper vs. online forms and that lack of patience surfaced time and time again… even if the online form took a lot less time to fill out, people still expressed frustration. So don’t make the web form “look” like a paper form.
So, best practices: Split out the long form to multiple pages, and clearly label each form. “Chunk” like information (example: if you are asking a lot of personal information, put all those questions on one page and label it “personal information.” Tell the user before they start filling out the form how long it will take and what the information is used for (both points reduce abandon rates when used).
Finally, consider asking only the bare minimum, and “staggering” the user input to ask the information ONLY when it is needed in the full experience. Amazon does a great job with this technique, baby-stepping users through a potentially complicate process. Another idea: “pre-filling” fields with “intelligent default” values so that people can edit the information if it’s wrong instead of entering it from scratch.