CiviCRM Webform Integration - User registered for event before they've made payment
Registered for the Event but Contribution Pending Incomplete is the correct behavior in the case of an offsite payment processor.

It’s essentially a pay later (though the pay later time is shorter than mailing in a chq).

PS - on the second part of yorur question - if you use an onsite payment processor then you will have Payment fields before the Submit button