I just tested this using the following code:
void OnCollisionEnter( Collision collision )
this.enabled = false;
Debug.Log( "Collided with " + collision.gameObject.tag );
if( this.enabled )
Debug.Log( "Enabled" );
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.