Hi,
I think this is not actually a pure workflow problem. The leave request application is responsible for finding the agent or making the user to enter it (at least in the standard solution), and the workflow just uses that agent.
Have you checked the workflow settings for the leave types in IMG -> ESS -> Service Specific Settings -> Working time -> Leave request -> Processing processes? I think there is some kind of option for forcing to have something in the next processor (approver) field? I am not sure about this, but the field "Not necessary to enter next agent" might work. I mean that if this is empty, then the application might let you to sent the leave request with no approver.
Other option might be that you add your own code to the BADI to do some additional checks when submitting the leave. Submit an error message if the next processor field is empty. I am not sure, if this is possible, but worth to check.
Kind regards,
Karri