Is it a good practice to enable fields by turn, so the next input will be enabled only when all required fields above are filled? In this way I am going to prevent the case when user submits a form with unfilled required values, but I suspect that as this practice is not common many users will think that the application is broken and will not immediately realize what is going on, or maybe they want to fill inputs not by turn. Can I somehow alleviate these problems and implement my solution? What about marking required but skipped fields by red border while user fills the form?
Try to create forms in a way they are easy for the user to understand and fill.
This is a bit beyond your question but I usually try to design apps and forms in a way that there is as little as possible required fields. This might sound strange, but when you really think about it, many times most of the required fields are really not required for the app to work.
Users that want to use your app are not stupid and usually there is little need to force them to enter required data.
On-Page validation alleviates the issue where users submit incomplete forms; you can completely disable the ability to submit a problematic form without forcing unusual behavior. There's rarely any reason I shouldn't fill out a form in a completely orderless fashion, and even if I do that doesn't mean any of those individual fields are necessarily incorrect.
Forcing a sequence does solve the problem of incomplete forms but can cause great frustration. Inline validation is much more user friendly and doesn't make anything appear like it's broken; if you grey out an area a user may not know why. If you pop up an error message when you try to open a restricted field, that's annoying. And in either case you have to add the extra step of explaining why fields are disabled. Unless one field's value depends on a previous entry I would never recommend strict sequential entry, and if this is the case I would only make sequential entry required for that field.
An example of required sequential entry is in validation of things like location; you might have to enter in your country, state or region before you may enter a Zipcode. More ideally you would accept the zipcode in this case but show a validation message saying you must enter your country, state ect. Just because they entered the zip code first doesn't make the value incorrect, so you don't have to clear/disable the field. Instead, instruct them to fill out the dependent form element (state/region) so you can validate the zipcode properly, and then show an error if it is in fact incorrect.