podrías usar un label para sumplantar al boton y como el label es tan flexible como un div podrías hacer cualquier cosa
el css
.imagen-para-archivo input {
display:none;
/*si lo de arriba no funciona bien usar
visibility:hidden;*/
}
el html
<div class="imagen-para-archivo"> <label for="boton-archivo">
<input id="boton-archivo" type="file" />