You can do this by using a method similar to the one described here http://social.msdn.microsoft.com/Forums/en-us/iewebdevelopment/thread/126fcea8-c28b-49ce-ad49-65884ffabeb6
Basically you open up an iframe pointing to about:blank. Then you create a new form that posts to the page you want to post to, along with a input value containing your data and targets your blank iframe. Then you submit the form.
Here's a sample function that does just that. Note that because of a bug with ie and dynamically renamed iframes, you have to remove and add the iframe back.
var openModalAndPostData = function (url, args) {
var formUrl = url+ "?IsDlg=1";
ExecuteOrDelayUntilScriptLoaded(function () {
var options = SP.UI.$create_DialogOptions();
options.url = "about:blank";
options.width = 990;
options.height = 560;
options.args = args;
options.dialogReturnValueCallback = closeCallback;
SP.UI.ModalDialog.showModalDialog(options);
var frame = $(".ms-dlgFrame");
frame.attr("name", frame.attr("id"));
var frameParent = frame.parent();
var html = frame[0].outerHTML;
frame.remove();
frameParent.append(html);
var form = $("<form action='" + formUrl + "' method='post' target='" + frame.attr("name") + "'><input type='hidden' name='args' value='" + JSON.stringify(args) + "' /><input type='submit' /></form>");
$('body').append(form);
form.submit();
form.remove();
}, 'sp.js');
}
If you use this, then you can access your modal's args in the codebehind using "Request.Form["args"]