Well by default if they enter a value and it is assigned to the picklist and teh picklist is unrestricted - you will see that the going to add an inactive value ( see below example ):
Picklist:


Example 1 ( using a controller ):
<apex:page standardController="Report_Type__c" extensions="Test" >
<apex:form>
<apex:pageBlock>
<apex:pageBlockButtons location="bottom">
<apex:commandButton value="Save" action="{!Save}" />
</apex:pageBlockButtons>
<apex:pageBlockSection columns="2">
<apex:inputField value="{!Report_Type__c.Name}" required="true" />
<apex:pageBlockSectionItem />
<apex:inputField value="{!Report_Type__c.Sample_Picklist__c}" />
<apex:inputText value="{!newValue}" />
</apex:pageBlockSection>
</apex:pageBlock>
</apex:form>
</apex:page>
Controller Code:
public class Test{
public String newValue { get; set; }
public Report_Type__c obj { get; set; }
ApexPages.standardController sc { get; set; }
public Test( ApexPages.standardController controller ){
sc = controller;
obj = ( Report_Type__c )controller.getRecord();
}
public PageReference Save(){
obj = ( Report_Type__c )sc.getRecord();
if( obj.Sample_Picklist__c == null && !String.isBlank( newValue )){ obj.Sample_Picklist__c = newValue; }
try{
Database.insert( obj );
}
catch( Exception ex ){
System.debug( 'Error saving Report Type: ' + ex.getMessage() );
}
PageReference result = Page.Test;
if( obj.Id != null ){
result.getParameters().put( 'id', obj.Id );
}
result.setRedirect( true );
return result;
}
}
Results:


Option 2 ( just Visual force and standard Controller ) :
Page Code:
<apex:page standardController="Report_Type__c" >
<apex:form>
<apex:pageBlock>
<apex:pageBlockButtons location="bottom">
<apex:commandButton value="Save" action="{!Save}" />
</apex:pageBlockButtons>
<apex:pageBlockSection columns="2">
<apex:inputField value="{!Report_Type__c.Name}" required="true" />
<apex:pageBlockSectionItem />
<apex:inputField value="{!Report_Type__c.Sample_Picklist__c}" />
<apex:inputText value="{!Report_Type__c.Sample_Picklist__c}" />
</apex:pageBlockSection>
</apex:pageBlock>
</apex:form>
</apex:page>
Results:

You can also populate a picklist within the controller by looping through Schema.PicklistEntry[] and adding each value - if they add one in text box - you can add it to the list and return null instead of a new page reference - this will also show your list - if you are looking to add new values for All users to select moving forward - you can try something like the code in this guy's question to do this before returning your page after saving. This should update the value with the value that the user entered ( given you do a little variable swapping from what he has - same concept )
Hope it helps answer your question.