If you want to consider users with special visual and/or cognitive requirements, it becomes quite complicated and there's no single answer. The W3C Web Accessibility Initiative's Web Content Authoring Guidelines (WCAG) provide a good starting point. That's probably the single most thoroughly-researched resource on web accessibility, though it's not totally uncontroversial.
The most important considerations for all users are contrast and text size. The contrast (brightness ratio) between text and background is recommended to be at least 4.5:1 (examples). The size of text should be no smaller than the user's default.
Some people find black text on a pale yellow background easier to read. Others cannot read dark-on-light schemes at all (e.g. because of uveal coloboma) and will want white on black text. Larger text is always easier to read, but it reduces the amount of text you can display which may irritate users with good eyesight.
In short, you can't please everyone with a single design, and for this reason the general advice for web pages is to honor the user's defaults as much as possible, so if one user needs 40-point green text on a brown background, they can select that for themselves.
In truth, very few websites are truly accessible to everyone. It's a lot of work to implement, and a lot more work to maintain, and sometimes you just have to work with individual users to solve their problems. But it's worth being aware of different users, and you should at least avoid the most common problems:
- Never use complex or low-contrast backgrounds
- Never use small text (less than the equivalent of 12pt)
- Never use images to display text
- If something seems a little hard to read, it's probably impossible to read for some users.
Also, note that columns, menus, sidebars, ads, etc. can make text much harder to read. Personally I'd say body text should have at least an inch of white space around it.