I can't reproduce this, we may have to see if a developer can figure out what's going on from the stack trace. If you have a chance, it might also be helpful to include Application output, IDE logs , and device logs.
You can get IDE logs from here:
Visual Studio=> Help=> Xamarin => Zip Xamarin Logs ( attache the zip file)
You can get ADB logs from here:
Open Command prompt and navigate to Android SDK=> platform-tools directory and run the following command.
> adb logcat
Environment Info:
Microsoft Visual Studio Professional 2013
Version 12.0.31101.00 Update 4
Microsoft .NET Framework
Version 4.5.51641
Installed Version: Professional
Xamarin 3.11.590.0 (5160db7)
Xamarin.Android 5.1.3.1 (d419c934e6ce2113653ff4c40214e3a5d5a69440)
Xamarin.Forms Intellisense 1.0
Xamarin.iOS 8.10.1.0 (fce006eae308515fc1eaf85fcc0f90699d9c7e8b)

I catch TimeZoneNotFoundException every time when call DateTime.Now().
It's often reproduces on Lenovo phones when timezone "GMT +03:00 Moscow" is selected.
Workaround for it is using DateTime.UtcNow.AddHours(3). But I can't use this when i try to create any system class if it use DateTime.Now() in constructor. An example, System.Net.Cookie throws TimeZoneNotFoundException when I try to create new instance.
This error throws in all versions of Xamarin.Android since v4.20.0.28

I am not able to reproduce this issue in the devices that are available to me.
Below is a script that should give us the details we need to better understand what is causing this. If you have a device with such problem please let me know the output.
https://gist.github.com/esdrubal/c018dd17cfd354bdf9ef

Hi Rulon,
Thanks to your input we now know that the problem is not related with a bad timezone id.
It seems to be a problem while parsing the timezone data.
I updated the script to dump the data of problematic timezones. The output from the updated script should be enough to reproduce the parsing errors on my end.
Please let me know the output of the updated script.
https://gist.github.com/esdrubal/c018dd17cfd354bdf9ef

Not sure if it is related but we get the same crash on Xamarin.iOS on jailbroken phones (Cydia) running 8.4.
Unhandled Exception:
System.TimeZoneNotFoundException: Exception of type 'System.TimeZoneNotFoundException' was thrown.
at System.TimeZoneInfo.GetMonoTouchData (System.String name, Boolean throw_on_error) [0x00000] in <filename unknown>:0
at System.TimeZoneInfo.CreateLocal () [0x00000] in <filename unknown>:0
at System.TimeZoneInfo.get_Local () [0x00000] in <filename unknown>:0
at System.TimeZoneInfo.GetDateTimeNowUtcOffsetFromUtc (DateTime time, System.Boolean& isAmbiguousLocalDst) [0x00000] in <filename unknown>:0
at System.DateTime.get_Now () [0x00000] in <filename unknown>:0

For anybody who is still struggling with the TimeZoneNotFoundException, I managed to find a workaround that was originally found by HHumbert on Reddit.
Use NewTerminal (or any other Terminal emulator) or SSH into the offending device, login as superuser and type in the following, verbatim:
cd /var/db/timezone
mv zoneinfo zoneinfo.broken
ln -s /usr/share/zoneinfo.default zoneinfo
HHumbert explains the issue and circumstances of his find more clearly in his Reddit post, as follows:
https://www.reddit.com/r/jailbreak/comments/3ll1rf/tutorial_solution_how_to_fix_broken_timezone_in/
The above seemed to do the trick for me and I hope it helps others as well!
RM