The possible solution:
to add IStopExecution interface with single member
The user will create a new class and implements this interface then pass an instance of class to Shapefile.StopFunction property. Then in every geoprocessing method StopFunction will be called and the execution will be terminated in case 'true' is returned. On the client side StopFunction implementation can be like this: Application.DoEvents call and some check whether user hit the cancel button (returns true if it happened).
It would be good to use instance of ICallback to do it of course. But there is no way to check user's input in it as far as can I see. Also I can't modify the interface, as it will break the existing code.
The only other possibility:
user can implement both ICallback and IStopExecution interfaces in one class. Then pass an instance of class to GlobalCallback property. Internally I'll use QueryInterface to determine, whether IStopExecution interface is implemented and in case it is, use it in geoprocessing methods. Then I don't need to add Shapefile.StopFunction property. Similar functionality can be needed for Utils class for example, so probably no need to create too many new properties.
What do you think?