C, 215 bytes
i,k,t,s;f(char*g){char*l=malloc(strlen(g)),*p=g;for(i=s=t=0;*p;*p>35&&(t?l[i++]=*p:1)&&(*p=32),t&&*p!=35&&++s,++p)t=*p-35?t:!t;for(k=i;i;t&&*p==32&&(*p=l[--i]))t=*--p-35?t:!t;printf("%s\n%d",g,k?k-s?k*2<s?1:2:3:0);}
Outputs 0 for empty glass, 1 for mostly empty, 2 for mostly full, and 3 for full.