Hi Adam,
First, I would draw some random curves on the surface (window) and set them up to be goals.
Check the distance from each particle and the closest curve would be the goal for the particle. Weight the U value goal for the particle to the curve for gravity. i.e. increase or decrease goalU depending on which way gravity is going.
From your image, you notice that there is no surface tension to the glass from the water. You would have to build that - I would guess.
Fake edging of Surface Tension:
I would try the tail idea - but do it around the main bead of water. so, if you pick a radius outwards - particle offset distance - you could make another particle object/system. The main on will be what you have created - but not used to render. The 2nd would "follow" the second and the emit would spray circle of particles around the main core particle.
The spray would be in 1 planar axis - along the glass.
Then do a distance calculation from the center core particle out to each one.
Distance: 1) Use this to scale the radiusPP of each down to a value so that you still get the blobby happening. 2) move the smaller particles towards the surface based on the distance (linstep(0,maxDistance,whereAmIAt))
C