I just tested this using the following code:
void OnCollisionEnter( Collision collision )
{
this.enabled = false;
Debug.Log( "Collided with " + collision.gameObject.tag );
}
void Update()
{
if( this.enabled )
{
Debug.Log( "Enabled" );
return;
}
Debug.Log( "Disabled" );
}
"Enabled" was displayed until the object came in contact with something, it outputted "Collided with tag". "Disabled" was never shown, proving that disabling/enabling an object takes immediate effect. It's probably just a flag that is checked when calling event methods.
This is assuming that Update methods are called after OnCollisionEnter, which they, according to the Unity documentation, are.