You could do something with scripting tasks inside SSIS to find the column names and map them. However, you would be far better off informing your users to supply data in a predefined format. That way is much simpler and more sensible IMO. You are supplying a data import service and they want to use the service. If they don't comply to the agreed standard, you don't import the data. Maybe I'm too harsh, but that is how I expect both sides of a "contract" to behave.
One possible workaround could be to define an ODBC DSN for that file and then use ADO NET source with ODBC driver in the SSIS data flow task. The source in the ADO NET component will be a query to the flat file with single order of fields.