Use CSS opacity to make the file field invisible, but still clickable.
Also make the file field absolute positioned, and use a z-index to display it above a target button for the user the click.
You can reference the file name via javascript and populate your DOM element with that value.
You will want to do some text parsing since some versions of IE show the full file path.
This article will be useful: Styling a field field
I have done this many times and it works quite well.
Also check out plupload. It is a file upload library which supports HTML4, HTML5, Flash, and more. It works very well in many scenarios.