Sensible location for IPN Callback script

You can hook to the init action and then check for the query variable, you can use the PayPal provided query var or you can use your own custom query var.

I will give you example of your own custom query var i.e MYIPN_LISTENER

The Code:

function wpse58656_paypal_ipn_listener() {
    // check for your custom query var
    // If you are paranoid you can also check the value of the var
    if ( ! isset( $_GET['MYIPN_LISTENER'] ) ) {
        // if query var is not present just return
        return;
    }

    // do the processsing here

    // don't forget to exit when you are done
    exit;
}
add_action( 'init', 'wpse58656_paypal_ipn_listener' );

Now you can use any URL but it should have MYIPN_LISTENER as a query var e.g: http://mywordpressinstall.com/?MYIPN_LISTENER=1

tech