If you've come here for reputation points, that's the wrong idea. Reputation points are just an inhibitor to stop silly behaviour until you've proven yourself. The reason you're here (in my opinion) should be to provide useful questions or answers for the greater good.
In answer to your two specific queries:
1/ Many questions have no answer marked correct, even when one is plainly there.
I think you mean accepted, which is subtly different from correct. Accepted answers are totally under the control of the questioner. Correct answers, in terms of what the SO community thinks, are the ones with the highest net vote count.
I've had one answer that received a net 36 votes (the highest for that question), the accepted answer was -18 (a subjective question regarding breaks in loops so I didn't care that much).
Another accepted answer was clearly wrong to both me and the wider SO community (to do with SQL selecting minimum value across columns as well as within columns) - the accepted answer would not scale well and my answer would. However, I'm pretty certain I offended the questioner at some point by telling him his schema was rubbish and he may have accepted the other answer out of spite. Such is life, I should learn to be more tactful.
In fact, your situation is better in that the correct answer will bubble to the top if the questioner hasn't accepted a 'lowlier' answer (for want of a better term).
Basically I think we just need to understand the distinction between accepted and correct. I've often thought that the accepted answer shouldn't automatically be at the top but rather have (for example) 10 votes added, so that if 10 other people thought another answer was better, that would render the acceptance moot. It would stop ignorant questioners from choosing what's at the top of the list, once again returning that power to the SO community.
I'd put something up on uservoice but I'm not passionate enough about it. Anyone else want to give it a shot?
2/ Many questions are not reviewed by the poster to select a new correct answer.
Unless you've hacked into SO and can see the access logs, I don't there is no way you could tell this for sure.
I, for one, monitor all my responses to see if anyone's added new information which makes the old accepted answers worse. I've never found one yet and, to be honest, I'd prefer to see the accepted answer edited to provide the extra information since that guarantees it will still be at the top of the list.
Again, this comes down to rep-seeking. I have edited other peoples accepted answers (only to add at the bottom, not change the original) to add some pertinent information of my own and then deleted my answer that had that information in it.
That way, the best information stays at the top.
In addition, I've once bought another answer's info into my own answer when mine was the accepted one, again to ensure that the best answer is at the top.
If people really want an accepted answer, maybe a uservoice request to automatically accept the highest voted answer when the question hasn't had any activity for (e.g.,) 4 weeks would be the way to go. If the original questioner doesn't like that, they can always change it or un-accept it (although it'll accept again in another 4 weeks so they'll have to be vigilant).
Thanks for listening, I know it's been a long and not entirely painless experience :-).