You can use the headerValue
attribute of <apex:column>
to display the column header.
Excerpt from the above mentioned documentation
headerValue
The text that should be displayed in the column header. If you specify
a value for this attribute, you cannot use the column's header facet.
Note also that specifying a value for this attribute overrides the
default header label that appears if you use an inputField or
outputField in the column body.
So your code would be
<apex:column headerValue="yourColumnName">
<apex:outputText value="{!a.Condition.ImpsHostedfromOutsideSource__c}" rendered="{IF(!a.Condition.MRMFee__c == 'Visitor Data Hosting Fees',true,false)}"></apex:outputText>
<apex:inputField value="{!a.Condition.ImpsHostedfromOutsideSource__c}" rendered="{!a.Condition.MRMFee__c == 'Visitor Data Hosting Fees'}"> </apex:inputField>
</apex:column>
And if you want the entire column to be rendered based on a condition then you can use the rendered
attribute of <apex:column>
rendered
A Boolean value that specifies whether the component is rendered on
the page. If not specified, this value defaults to true.
<apex:column headerValue="yourColumnName" rendered="false">
<apex:outputText value="{!a.Condition.ImpsHostedfromOutsideSource__c}" rendered="{IF(!a.Condition.MRMFee__c == 'Visitor Data Hosting Fees',true,false)}"></apex:outputText>
<apex:inputField value="{!a.Condition.ImpsHostedfromOutsideSource__c}" rendered="{!a.Condition.MRMFee__c == 'Visitor Data Hosting Fees'}"> </apex:inputField>
</apex:column>
I have added rendered="false"
in the above mentioned code, you will have to replace it with your condition.