I think the preprocessor removes the unused code at compilation time.
But you can accomplish the same thing in a cleaner way using conditional attributes:
[Conditional("DEBUG")]
public void DrawDebugTitle() {
Form1.Title = "Debug mode";
}
Then simply call the method normally, and if DEBUG is defined then it will change the form's title, and if DEBUG isn't defined then the method call, while still appearing in your code, will do nothing.