There's a more practical side too: earlier in the project a day's work can produce a large increment in functionality. Later in the project you get less and less obvious result for your effort. Those smaller and smaller increments are important for your product to be polished and reliable, but they don't feel as satisfying to the implementer.