You ask good questions. Here is the answer: Money
Most likely you'd like a longer answer.
1) The marketing people generally will have a 'final say' as they are 'closest to the customer'. Depends. All it takes is for any person who is deemed to be higher in the food chain to trump those lower down and chaos can ensue.
People like marketing generally don't get on the ground floor because there is nothing to see. No product. Nothing to toss around, perhaps there might be mock ups or diagrams.
What *should* happen is that the UI should be mocked up and flagged with any group with an interest. Problem there is that sometimes the UI doesn't exist until the software is half written because the functional requirements determine what is on the UI and the functional requirements were not completed until the coding was 1/4 done.
Google why the Waterfall Model is no longer in use outside big business. You need the whole spec up front, business spec, tech spec, functional spec, you get the idea. This costs MONEY. It is expensive to do and expensive to change. In the real world you need code up running and out the door as fast as possible.
I lost count of how much code I've seen in Production with no specs at all.
2) Mostly because there is nothing to see
Unless you are designing the next Photoshop, the UI is not the first thing to be designed, and can change. Also, these people tend to be visual and don't always respond without images or a good specification in front of them.
Now imaging this and comment on it... oh no, it's not build yet, and there is no prototype.. just imagine it.
As it happens, I've seen a board put together to stop this sort of problem from happening. What happens then is that programmers, business people, project managers, test managers and anyone else with a stake on getting this code into production yesterday complains about the extra layer of red tape needed to release code.
Sigh.
See also: Money
Lack of organisation, lack of coordination, lack of methodology, not adhering to the agreed methodology, bad management, good management, bad programmers, good programmers, coding in the real world can be "very interesting" in the manner of 'may you live in interesting times'.