Schedule Removal of Menu Page and Shortcode

First, unless zeeshan is actually a function inside a class, do not use array($this,'zeeshan'). (If it is in a class, nevermind.)

Second, even if this event is firing – it may or may not be? – the way you have it is only going to affect the current pageload when triggered, so is rather pointless. Instead you could update an option value when the event is fired.

add_action('my_action', 'zeeshan_switch');

function zeeshan_switch() {
    if (!add_option('remove_my_menu_and_shortcode','1')) {
        update_option('remove_my_menu_and_shortcode','1');
    }
}

Then add a switch check to the start of your actual function:

add_action('init', 'zeeshan');
function zeeshan(){  
    // check for the trigger value
    if (get_option('remove_my_menu_and_shortcode') != '1') {return;}

    function custom_menu_page_removing() {
        ............

By the way, I hope you are giving plenty of user warning / notification before having a plugin disable it’s own functionality. It seems more like a crippleware strategy to me, an end user would probably prefer nagware over this! Instead you could consider a free / premium model, and use your time programming extra features for the premium version instead of on disabling the free ones. Just some random advice on what have been proven to work better.