Вы можете сериализовать свой объект в байтовый массив, например так (неполно, кредит http://www.exampledepot.com/egs/java.io/SerializeObj.html):
// Serialize to a byte array
ByteArrayOutputStream bos = new ByteArrayOutputStream();
out = new ObjectOutputStream(bos);
out.writeObject(object);
out.close();
// Get the bytes of the serialized object
byte[] buf = bos.toByteArray();
Затем отправьте байты на сервер, по одному сегменту за раз. Таким образом, вы всегда будете знать, какой процент от общего количества был отправлен. С другой стороны, вам придется реконструировать свой объект.