There are two aspects to this: hardware and software.
Hardware
You are assuming that the second Apple recompiles all the code, everybody will throw away their computers, and buy new ones. That will not be the case.
I used my old MacBook Pro for 7 years. I just bought a new one, on which I spent two months salary. I intend to use it for 5 years, at least, and I would still like to get updates during that time, please!
There are still people using Power Mac G5s, after all!
As long as there is still a substantial number of people running Intel-based Macs, Apple will have to have at least some support for those.
Apple can only finish the transition when either there is nobody using Intel Macs anymore, or Apple is willing to cut off support for those who still use them. Personally, I find two years a rather aggressive timing for that. Two years is the typical time frame for corporations to write off their IT investments, but large corporations tend to be Wintel-based. Many Mac users are not corporations but private individuals who use their computers far longer than two years.
Software
You ask [bold emphasis mine]:
I thought all they would need to do is to recompile the source code of their apps and rewrite SIMD code from intel intrinsics to ARM NEON intrinsics.
That's exactly the problem: yes, they can recompile their apps, but what about Microsoft's apps? Adobe's apps? Ableton's apps? Steinberg's apps? Avid's apps? What about the tons of third-party apps by small indie shops, or individual hobbyist developers? All of those need to be recompiled and possible partially rewritten, too.
I expect that especially the high-performance media manipulation apps will contain lots of hand-written assembly code in their critical paths as well, which will have to be rewritten from scratch. I would expect the same to apply to game engines.
Also, not everybody uses Swift, Objective-C, C++, or C. What about apps written in languages for which no compiler exists that targets ARM? For these, either a new compiler has to be written, or the app has to be rewritten from scratch.
For Apps that are distributed on the Mac App Store, Apple has found a solution:
Apple already requires Apps on the Mac App Store to be delivered in LLVM bitcode format, so that they can be recompiled to ARM. In fact, I wouldn't be surprised if Apple were already recompiling all apps in the Mac App Store to ARM, in order to find any problematic code patterns, contact the authors of popular and important apps, etc.
But, not all apps are distributed through the Mac App Store. Plenty of apps are distributed through other means for various reasons. Some are simply not allowed on the Mac App Store, some are developed by developers who cannot afford to pay the fee for the account, for example.
All of these need to be addressed, or the apps will simply no longer be available on ARM. Also, for this, I find two years to be a rather aggressive timeframe.