Is there a clean-URL-reflective version of file_create_url()?
I ended up using

str_replace('/?q=', '/'drupalGetHeader('location'));


So basically I gave up on including the ?q= that appears in the URL and instead stripped it from everything. It seems a little messy but it works for my purpose. Still doesn't really answer the question though.

drupal_parse_url() looked promising at first, but it didn't work because  

drupal_parse_url(file_create_url($uri)) returned 'path' = http://example.com/path/to/file 

but 

drupal_parse_url(drupal_get_headers('location')) returned simply 'path' = /path/to/file