I've been splitting this problem up into its core and created the following - A custom component and its controller, a page and its controller only using User object so it should be easy to get it up running:

Is there a lookup to Contact on your CustomObject? It looks like you are trying to access the field incorrectly. have your tried using myCustomObject.Contact__c as opposed to myCustomObject[Contact__c]?
– Chris DuncombeFeb 20 '14 at 10:48

Yeah there is a lookup relationship to the contact. I'm also getting the lookup dialog and it's possible to fill in the myCustomObject['Contact__c']. I've also done the same thing but with a String that beeing set inside the custom controler. Get the same result the value for the string is null.
– SiggeFeb 20 '14 at 11:01

I tried with a String instead of a Contact, but it didn't really work until i did the following: <input id="theTextInput{!uniqueID}" type="text" value="{!temporary}" name="theTextInput" onchange="newUser{!uniqueID}(document.getElementById('theTextInput{!uniqueID}').value);"></input> This works, but I want to be able to use apex:inputField and not input + js.....
– SiggeFeb 20 '14 at 13:04

I'm running into something similar. I have an apex:repeat inside an outputpanel. Inside the repeat there is a commandlink with an action and a rerender. If I enter data in other fields inside the repeat and press the button with the actionlink and rerender the outputpanel, the values are empty again. However, I do see the values being posted but they are not returned in the ajax-call
– Marcel MeijerJul 26 '17 at 8:03