Simple way to toggle between 2G and 3G connection
With Xposed module and Gravity Box installed, the pull down status bar can be customised even on stock ROM (of course it has to be rooted).

I have a Nexus 5 running stock 4.4.4 and following is how it looks:


With these installed, one can swipe down with two fingers from top and just tap the last tile shown as "3G" in the image. Though this nearly misses the first requirement of using no more than one tap, technically it still does as you have swipe down and use one tap. 

That tile toggles between 3G, 2G, 2G3G states.  There is a minor lag to see the signal strength tile to reflect the status as "H+" or "E".

By installing the Gravity Box, I was also able to bring in the additional tiles like "Torch On/Off", "Auto Rotate Lock" etc which were not available in the stock ROM.

Update:
Thanks to jsen who was kind enough to share an intent to switch between 2G and 3G using Tasker and Gravity Box (that implies Xposed framework and rooting).

To avoid a dead link in future, the content of that Tasker hack is as below:

Send Intent [
Action: gravitybox.intent.action.CHANGE_NETWORK_TYPE
Cat: None
Mime Type:
Data:
Extra: networkType:1
Extra:
Package:
Class:
Target: Broadcast Receiver]

networkType enum values are: 
0: WCDMA Preferred 
1: GSM only &lt;-- This would be "2G" on GSM networks
2: WCDMA only &lt;--WCDMA is "3G" on GSM networks. You may know it as HSPA
3: GSM auto (PRL)
4: CDMA auto (PRL)
5: CDMA only &lt;-- This would be "2G" on CDMA networks
6: EvDo only &lt;-- EvDo is "3G" on CDMA networks
7: GSM/CDMA auto (PRL)
8: LTE/CDMA auto (PRL)
9: LTE/GSM auto (PRL)
10: LTE/GSM/CDMA auto (PRL)
11: LTE only
12: "unknown"


In my office, I have very bad 2G signal which drops my call very frequently. Hence I used to switch to 3G when I reach office. I created an entry task named "Enable 3G" and an exit task named "Enable 2G" which just sends intent as above. With Tasker's "Cell Near" state I can ask Tasker to enable 3G when I am near office and switch back to 2G while leaving.