Hi Pablo,
I understood your need and unfortunately there is no any other ways to stop the transaction until your save validation got executed. This is because the standard scripts which are there with the BO will triggered and the activities like assigning ID and other fields will be executed. This would be probably because of the Standard After Modify script which is been assigned to that BO. So you cannot stop assigning of the ID in the BO transaction until your save happens successfully.
I found a way for this and it may not fill your need exactly but can be some thing like work around. As you stated above,delete your event before save script and in the place of this get the other two script files like After Modify and On Save Validation.
On After Modify implement the code for checking the needed two fields are filled or not accordingly and if not filled then raise a warning message for user sake to fill this fields other wise the transaction will be failed at save time or stating the needed two fields are mandatory and needed to filled compulsory for processing the transaction. On UI using extensibility explorer make these fields as mandatory (getting the star symbol to the needed fields).
On the save event finally check the fields whether filled with values or not and so if not then fail the transaction that's all.
I think this should be fine and will be fulfilling the need to some extent may not exactly what you are looking.