1. An inventory item that is set as special order item has to be received from the Purchase Order first before it can be fulfilled on the sales order
2. If there is a Fulfill button on the sales order when the item has not been received yet , check this preference under Setup > Accounting > Accounting Preferences > Order Management tab > Fulfill Based on Commitment = Ignore Commitment or Allow Uncommitted , then the user will be allowed to fulfill back ordered items, even for special order items.
3. Change the preference to Limit to Committed to prevent this from Fulfilling before receiving