You are right, what you want will be blocked by the browser due to security reasons (same origin policy).
What you can do:
Reload the form in the iframe and pass it the data you get from the js sdk, you can even POST the data into the iframe (like facebook does with canvas apps).
You should be able to change the location of the iframe, but just the hash part (fragment), which will not cause the iframe to reload.
In the iframe be aware of location changes and extract the data from the fragment.
The problem is that this method will probably mess up with the browser history.
Find another solution for cross domain communication, maybe easyXDM?
Edit
Here are two implementations of the first option:
1) Using GET
<iframe id="userform"></iframe>
<script type="text/javascript">
// load and init FB JS SDK
FB.api("me", function(response) {
document.getElementById("userform").src = USER_FORM_URL + "?name=" + response.name;
});
</script>
2) Using POST into the iframe
<form method="POST" action="USER_FORM_URL" target="userform" id="postForm">
<input type="hidden" name="fbResponse" id="fbResponseInput" />
</form>
<iframe name="userform"></iframe>
Then, on the iframe itself, get the data (either from GET or POST) and render the user form accordingly.
<script type="text/javascript">
// load and init FB JS SDK
FB.api("me", function(response) {
document.getElementById("fbResponseInput").value = JSON.stringify(response);
document.getElementById("postForm").submit();
});
</script>