I am also interested in finding a reliable way to distinguish a tablet from a smartphone and therefore I am digging up this rather old topic.
The previous post is a good solution but not 100% since there are tablets with phone-support (for instance Acer A501).
I guess one could also verify what Android OS is installed and if it is Honeycomb, one could be rather certain that it is a tablet since I think Honeycomb was only for tablets (although I know there were unofficial portings of Honeycomb to phones). However, if it is not Honeycomb (for instance Ice Cream Sandwich), then there is no way to tell......
I guess that verifying a combination of what written in this thread should most times be good. If not, one could add an option in user-settings of the app where the user can flag the device as a tablet.
Any other suggestions?