When I'm reading a long document in a web browser, I usually use the keyboard to scroll up and down in discrete steps. The arrow keys (or the scrollbar buttons, or the scroll-wheel on a mouse) will move up and down in small steps; space and backspace (or clicking in the scrollbar) will move by pages.
The problem is that the distance moved in the page usually isn't related to the content of the page: pressing the down arrow will often move a bit more than the line height of the text, leaving you with half a line of text at the top of the page. I'd prefer it if scrolling by a discrete amount always moved you to a boundary between lines, so that you had a complete, readable line at the top of the display; it would then be possible to define the up and down arrows to scroll up or down a line (like they do on a character-cell-based display). Note that this means not always scrolling by the same amount: if you're scrolling past a heading, then that'll require a bigger jump than a normal line of text.
Scrolling by a page is usually implemented to overlap by a line; it'd be nice if the amount of overlap were configurable (since I prefer not to have overlap, and other people prefer to have up to half a page of overlap), but this method would in any case allow the first overlapped line to be aligned to the top of the display.
I can think of two problems with this idea. The first is that the bottom of the display won't necessarily be showing a complete line; since you're normally scrolling forwards this shouldn't be a problem. Perhaps it might make sense to blank out the incomplete line rather than displaying it?
The second is that any layout where you've got multiple vertical columns of text (for instance, where you've got a sidebar in a smaller font) will have multiple sets of linebreaks to choose from; you'd need some heuristic for selecting the most useful bit of text to align to at any given vertical location. It might be sufficient just to pick the longest text, or that closest to the middle of the screen.
There are a number of projects working on making it easier to read text on screen; for example, the lexiaProject.