"X" number of temperature sensors on the side of the tank, say 10 sensors for arguments sake. Read all 10 sensors. Where the reading changes appreciably, the liquid stops.
Built something similar for a guy awhile back for a 5000 gallon water tank. 8 LM35's spaced evenly along the north side, epoxied to the side of the tank. Using a PIC18F2550 to read the LM35's directly. Takes readings from the sensors every minute, averages them out over 10 minutes, looks for the largest change between two side-by-side sensors, if there isn't any, looks for the largest change between every other sensor, send the high/low readings via a simple 433Mhz serial link back to another PIC with an LCD up at the house. For extra credit, got a solar panel charging the battery pack up too.
The theory being, and it happens to work in this case, that air and water heat up / cool down at different rates during the day and night. Therefore, the air will heat up / cool down faster than the water, wherever that change is the greatest, that's where the water line is. 3 seasons in and it's still working. This summer, the guy wants me to add in a water pump on/off switch to it to automatically fill the tank.
And didn't have to cut any holes in the tank.