The trick is to standardize on a price field that is not dependent on a code implementation. Unfortunately, you can't disable a field that is defined in code. This is known as a "core quirk" and I found at least one developer mention it openly in regards to a different module:
See point #1 that guy makes about a field that's defined in code.
So, the default line item type has a price field that is defined in code. For example, if you go here to try and edit the default line item price field: admin/commerce/config/line-items/product/fields/commerce_unit_price you will get the following "notice"
The field Unit price is locked and cannot be edited.
This is by design, partially due to the fact that prices are constantly being re-calculated for each new user (this is designed to allow for user-specific pricing).
How do you get around this design? I'm guessing here, but pretty sure you have two options:
1) You could use http://drupal.org/project/commerce_custom_product and create a new "non-default" line item type with a price field that is not required.
2) You could create a rule that simply sets the price to zero if the checkbox "Call for Price" is checked
I tend to think option #2 makes the most sense as it works within the standard system without requiring yet another module.