I have not, but there have been several past threads from people who did.
Why would you do it?
1. Fun hobby
2. Educational
3. Better control
Why would you not do it?
1. You could create situations where you have no control!
2. You could get tired and fed up, but still you must maintain the system or your home is in trouble!
3. If you need to hire a local HVAC repairman, or security alarm contractor, or any other maintenance or repair person, he may take one look at your control system and say "not me, buddy".
4. When you go to sell your house, you probably will have to remove all your controls, or take a big hit on the price.
I think that's an excellent summary of the pros and cons. In fact, my reasons for doing it line up with all three of yours, and even in the same order!
My project (just in the breadboard stage at this point) uses a PLC to operate GE RR9 remote-control relays. The RR9 is a single-pole mechanically-held latching relay with a split coil and pilot contact, whose lineage dates back to at least the early 1960s, when GE promoted its ancestor as a more-flexible alternative to conventional line-voltage switches in all types of buildings, including residences.
The home market never really took off, but the RR9 (and at least a couple of competitors) is the core of several modern lighting-control systems for non-residential buildings. And there is a small base of home systems, mostly from the '60s, that are still lovingly maintained - or tolerated, depending on the installation and the owner. In fact there's a Yahoo group devoted to the GE relay system, comprised almost exclusively of residential owners. Some work on the systems themselves, but some of those who don't have had frustrating experiences with "electricians" whose knowledge is apparently limited to "connect black to black and white to white", lending credence to your reason #3 for not building a home-automation system.
Anyway, my "laboratory" consists of a Click C0-01DR-D PLC (8 DC inputs, 6 relay outputs) and power supply, one 16 DC input and one 8 relay output modules, suppression diode terminal blocks to protect the relay contacts, a separate 24VDC supply for the GE relays and control switches, assorted toggle switches, pushbuttons and pilot lights, a GridConnect Modbus RTU/TCP Ethernet gateway for control and monitoring, a USB-serial converter for program loading, and a Windows XP PC running an Apache server with PHP (I'm using a PHP open-source Modbus TCP implementation and AJAX for internet-based system operation).