Apart from, as @underdark says ST_Length() returns a cartesian distance between the two points which in an unprojected CS is meaningless in this case, I would go with the answer you get from PostGIS. Google Earth uses a spherical globe, whereas the WGS84 globe is a spheroid - it is slightly squashed at the poles. Over short distances, there won't be much difference between the two, but at 1500km, there will be a more significant difference, more so as your line deviates from east/west.
Also, because the WGS84 spheroid is just an idealised model of the earth, don't be fooled by the precision of the result, the accuracy is going to be much lower. If you used WGS84 to guide a missile over that sort of distance, you're likely to hit the next street over.
You can get the same result as GE in PostGIS should you want, by using ST_Distance_Sphere()
this is useful if you're using PostGIS as a data provider to GE.
Running your example on my PostGIS 1.5 system, I get:
SELECT ST_Distance_Sphere(
ST_GeomFromText('POINT(77.83042478941326 9.98463896136159)',4326),
ST_GeomFromText('POINT(78.03469506809812 23.90398909552571)',4326));
st_distance_sphere
--------------------
1547914.78948724
SELECT ST_Distance_Spheroid(
ST_GeomFromText('POINT(77.83042478941326 9.98463896136159)',4326),
ST_GeomFromText('POINT(78.03469506809812 23.90398909552571)',4326),
'SPHEROID["WGS 84",6378137,298.257223563]');
st_distance_spheroid
----------------------
1540651.62674101