If you don't require the receiver to be online, then this would add a level of complexity to the Bitcoin system. The transaction needs to persist somehow until the receiver gets online.
Yes, that would be a requirement. If the receiver is not online, then eventually, the sent packet simply falls off the network.
EDIT: Come to think of it, make the packet expire after say 10-30 minutes so the sender can safely assume the packet was not received.