Is it possible to post a file with drupal_http_request? Is it possible to use drupal_http_request() to post a file? If not, what function can I use to submit a file to a webservice?
All you need is to set correct header information. 
I'd do it like so:

$boundary = 'A0sFSD';
$headers = array("Content-Type" =&gt; "multipart/form-data; boundary=$boundary");
drupal_http_request('some/url/you/want/to/post/file/to', $headers, 'POST', multipart_encode($boundary, $params));
if ($request-&gt;error) {
    watchdog("ipaper", "Request failed - ". $request-&gt;error .' - '. http_build_query($params));
}


...............

function multipart_encode($boundary, $params){
    $output = "";
    foreach ($params as $key =&gt; $value){
    $output .= "--$boundary\r\n";
    if ($key == 'file'){
        $output .= multipart_enc_file($value);
    } 
    else {
        $output .= multipart_enc_text ($key, $value);
    }
    $output .="--$boundary--";
    return $output;
}

function multipart_enc_text($name, $value){
    return "Content-Disposition: form-data; name=\"$name\"\r\n\r\n$value\r\n";
}

function multipart_enc_file($path){
    if (substr($path, 0, 1) == "@") {
        $path = substr($path, 1);
    }
    $filename = basename($path);
    $mimetype = "application/octet-stream";
    $data = "Content-Disposition: form-data; name=\"file\"; filename=\"$filename\"\r\n";
    $data .= "Content-Transfer-Encoding: binary\r\n";
    $data .= "Content-Type: $mimetype\r\n\r\n";
    $data .= file_get_contents($path) . "\r\n";
    return $data;
}


You might also consider using cURL for this purpose.